- ベストアンサー
クリックした<a>タグのみにClass名を付けたい
- クリックした<a>タグのみにClass名を付ける方法を教えてください。
- jQueryを使用して、クリックした<a>タグにのみClass名を付けたいです。
- 複数の<a>タグがあり、クリックした一つだけにClass名を付ける方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
$(this).toggleClass("check");だと、クリックされた<a>のクラスが 反転するだけですから、全部一旦はずした上で、クリックされた<a> だけに付加すればよいでしょう。 $(function(){ $("#menu li a").click(function () { $("#menu li a").removeClass("check"); $(this).addClass("check"); }); })
その他の回答 (2)
- my--
- ベストアンサー率89% (91/102)
取り付けた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--さん、ご回答ありがとうございました。 非常に勉強になるお答えありがとうございます。 しかし動作をイメージする、というのは理解できたつもりですが まだまだ浅かったためか、実際動作させる事ができませんでした。 教えていただいたコードの一行一行をちゃんと理解できるよう追求してみようと思います。
- metametamu
- ベストアンサー率51% (153/295)
input要素のラジオボタンではダメなのでしょうか? label要素と組み合わせれば無意味にa要素を使わなくても済みますし。
お礼
metametamuさん、ご回答ありがとうございました。 ソース例はhrefを#にしておりましたが、実際はアンカーリンク先が入るので初めからaタグでと考えてました。 しかしラジオボタンを使うという発想は驚きです。 貴重なアイデアありがとうございました。
お礼
yyr446さん、ご回答ありがとうございました。 お教えいただいた方法で希望通りの動作にできました。 実にシンプルでわかりやすく、助かりました。 ありがとうございました。