人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

jQueryでメニューをクリックした時にbodyにclassを付与したい。
現在、メニューは以下のようなURLになっています。
<ul>
<li><a href="#top"></li>
<li><a href="#about" class="about"></li>
<li><a href="#info" class="info"></li>
<li><a href="#contact" class="contact"></li>
</ul>
#top以外のbodyに、pageというクラスをつけるにはどうしたらいいでしょうか?
どうぞよろしくお願いします。

●質問者: dekapurio
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

クリックしたもの以外のメニュー項目に page というクラスをつける、ということでしょうか。

<ul>
<li><a href="#top">TOP</a></li>
<li><a href="#about" class="about">ABOUT</a></li>
<li><a href="#info" class="info">INFO</a></li>
<li><a href="#contact" class="contact">CONTACT</a></li>
</ul>

<script>
$(function() {
 $("UL LI A").each(function() {
 var a = $(this);
 if (a.attr("href") != "#top") {
 a.attr("class", a.attr("class") + " page");
 }
 });
 $("UL LI A").on("click", function() {
 var me = $(this);
 $("UL LI A").each(function() {
 var a = $(this);
 var clz = a.attr("class");
 if (typeof clz != "undefined") {
 a.attr("class", clz.replace(/page/, ""));
 }
 if (me.attr("href") != a.attr("href")) {
 a.attr("class", a.attr("class") + " page");
 }
 });
 });
});
</script>

jsFiddle で試したのが、こちらです。
http://jsfiddle.net/7sdfLjgw/





追記です。

<body>にクラスをつけたいです。
aboutやinfoのリンクをクリックすると、<body class="page">となり、TOPの場合は、<body>のままになるということです。

では、こんな感じで。

<ul>
<li><a href="#top">TOP</a></li>
<li><a href="#about" class="about">ABOUT</a></li>
<li><a href="#info" class="info">INFO</a></li>
<li><a href="#contact" class="contact">CONTACT</a></li>
</ul>

<script>
$(function() {
 $("UL LI A").on("click", function() {
 var a = $(this);
 var body = $("BODY");
 if (a.attr("href") != "#top") {
 if (body.attr("class") != "page") {
 $("BODY").attr("class", "page");
 }
 } else {
 body.attr("class", "");
 }
 });
});
</script>

jsFiddle で試したのが、こちらです。
http://jsfiddle.net/7sdfLjgw/1/


dekapurioさんのコメント
<body>にクラスをつけたいです。 aboutやinfoのリンクをクリックすると、<body class="page">となり、TOPの場合は、<body>のままになるということです。 質問のHTMLが間違ってましたね。すいません。

a-kuma3さんのコメント
>> &lt;body>にクラスをつけたいです。 aboutやinfoのリンクをクリックすると、&lt;body class="page">となり、TOPの場合は、&lt;body>のままになるということです。 << 回答に追記しました。

dekapurioさんのコメント
有難うございます! パーフェクトでした。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ