• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:クリックした<a>タグのみにClass名を付けたい)

クリックした<a>タグのみにClass名を付けたい

このQ&Aのポイント
  • クリックした<a>タグのみにClass名を付ける方法を教えてください。
  • jQueryを使用して、クリックした<a>タグにのみClass名を付けたいです。
  • 複数の<a>タグがあり、クリックした一つだけにClass名を付ける方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

$(this).toggleClass("check");だと、クリックされた<a>のクラスが 反転するだけですから、全部一旦はずした上で、クリックされた<a> だけに付加すればよいでしょう。  $(function(){   $("#menu li a").click(function () {    $("#menu li a").removeClass("check");    $(this).addClass("check");   });  })

noname#177060
質問者

お礼

yyr446さん、ご回答ありがとうございました。 お教えいただいた方法で希望通りの動作にできました。 実にシンプルでわかりやすく、助かりました。 ありがとうございました。

その他の回答 (2)

  • my--
  • ベストアンサー率89% (91/102)
回答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; // イベントキャンセル });

noname#177060
質問者

お礼

my--さん、ご回答ありがとうございました。 非常に勉強になるお答えありがとうございます。 しかし動作をイメージする、というのは理解できたつもりですが まだまだ浅かったためか、実際動作させる事ができませんでした。 教えていただいたコードの一行一行をちゃんと理解できるよう追求してみようと思います。

回答No.1

input要素のラジオボタンではダメなのでしょうか? label要素と組み合わせれば無意味にa要素を使わなくても済みますし。

noname#177060
質問者

お礼

metametamuさん、ご回答ありがとうございました。 ソース例はhrefを#にしておりましたが、実際はアンカーリンク先が入るので初めからaタグでと考えてました。 しかしラジオボタンを使うという発想は驚きです。 貴重なアイデアありがとうございました。

関連するQ&A

専門家に質問してみよう