

複数ある<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を探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリー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について質問なのですが...
おすすめ情報