

複数ある<a>タグの内、クリックした一つだけにClass名を付けたい場合はどうすればよいでしょうか?
ソースは以下のようになっています。
<ul id="menu">
<li><a href="#">北海道</a></li>
<li><a href="#">東北</a></li>
<li><a href="#">関東</a></li>
</ul>
「北海道」をクリックした場合 <a href="#" class="check">北海道</a> となり
次に「東北」をクリックした場合は <a href="#" class="check">東北</a> となる
そのさい「北海道」についていた class="check" は外れる。
といった事をしたいのです。
現状、jQueryで以下のようにしたはいいのですが、複数にclass="check"が付いてしまい、希望の動作になりませんでした。
<script type="text/javascript">
$(document).ready(function(){
$("#menu li a").click(function () {
$(this).toggleClass("check");
});
});
</script>
ぜひ、お教えいただければと思います。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
$(this).toggleClass("check");だと、クリックされた<a>のクラスが
反転するだけですから、全部一旦はずした上で、クリックされた<a>
だけに付加すればよいでしょう。
$(function(){
$("#menu li a").click(function () {
$("#menu li a").removeClass("check");
$(this).addClass("check");
});
})
yyr446さん、ご回答ありがとうございました。
お教えいただいた方法で希望通りの動作にできました。
実にシンプルでわかりやすく、助かりました。
ありがとうございました。
No.3
- 回答日時:
取り付けたclass名をそのままにしてると、当然そうなりますよね。
各要素を巡ることをイメージしてみましょう。
クリックされた(target)要素ならclass名を取り付ける。そうでなければ
class名を外してやれば希望の動作になりそうです。単純ですが、これもアルゴリズム。
var list = $("#menu li a"); // 対象要素をリストアップしたjQueryオブジェクト
list.click(function (e) { // イベント関数設置
var target = e.target; // イベント発生要素
list.each(function () { // 各要素を巡る
if (this === target) $(this).addClass('check'); // targetならclass名を取り付ける
else $(this).removeClass('check'); // そうでなければclass名を外す
});
return false; // イベントキャンセル
});
my--さん、ご回答ありがとうございました。
非常に勉強になるお答えありがとうございます。
しかし動作をイメージする、というのは理解できたつもりですが
まだまだ浅かったためか、実際動作させる事ができませんでした。
教えていただいたコードの一行一行をちゃんと理解できるよう追求してみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タブ切り替えの初期表示について
-
jqueryのsortableで一部ソート...
-
for(var i=0;...) の i の値を...
-
javascriptでEnterキーをtabキ...
-
【javascript で動的に a タグ...
-
jQueryでネスト構造の<li>がク...
-
gridstack.jsについて教えてく...
-
jQueryのhide,showで中の要素が...
-
メニューのリンクをクリックし...
-
JS <a></a>タグ内のリンク先ア...
-
質問に答えていくと、回答によ...
-
クリックした<a>タグのみにClas...
-
検索した後の最初の画面で、フ...
-
onmouseoverの表示切り替えが上...
-
大量のチェックボックス状態取...
-
jquery ドロップダウンメニュー...
-
jQuery効率のよい書き方について
-
javascript テキストエリアを1...
-
javascriptでフォーカスを当て...
-
Jquery の slide.toggle で要素...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
どの<li><a> が押されたか判別...
-
同一ページ内で、任意の文字列...
-
タブ切り替えの初期表示について
-
jQueryスライドメニューの初歩...
-
jQueryのeqで最後からn番目以降...
-
javascriptでフォーカスを当て...
-
<li></li>の数を制限
-
【javascript で動的に a タグ...
-
JS <a></a>タグ内のリンク先ア...
-
『JavaScript Accordion』について
-
カレントページ aタグではなく...
-
jQueryプラグインのメガドロッ...
-
jQueryで記事を6列表示にした...
-
大至急!!HPビルダー16の専...
-
jquery 親要素以外の取得
-
下記のようにクリックすると、...
-
jQueryでネスト構造の<li>がク...
-
ページの上下に同じタブメニュ...
-
jQueryについて質問なのですが...
おすすめ情報