複数ある<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で質問しましょう!
似たような質問が見つかりました
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS htmlについて質問です! 写真のように写真の部分が?になってしまいます。 ファイルもしっかり選べて 1 2023/07/09 21:17
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- その他(IT・Webサービス) html cssについて 3 2023/05/13 12:48
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【javascript で動的に a タグ...
-
ネストされたチェックボックス...
-
どの<li><a> が押されたか判別...
-
多階層ドロップダウンのスマホ...
-
文字と数字が混在する要素のsor...
-
JavaScriptのクッキーによるリ...
-
javascriptで、クリックしたら...
-
複数の画像をランダム(シャッ...
-
javascriptでEnterキーをtabキ...
-
jQueryセレクタ/複数要素の指...
-
javascriptで正規表現の検索が...
-
【jQuery】hoverしたn秒後にイ...
-
同一ページ内で、任意の文字列...
-
jQueryで、リンクURLの一致を確...
-
アコーディオン自動開閉メニュ...
-
クリックした<a>タグのみにClas...
-
MAX関数を使ってからLEFT JOIN...
-
javascriptで毎月替わる画像
-
HTMLで条件分岐はできますか?
-
HTMLですCSSです 画像のように...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
クリックした<a>タグのみにClas...
-
JQueryタブのアクティブ アン...
-
javascriptでEnterキーをtabキ...
-
「jQuery」アコーディオンメニ...
-
【jQuery】遅延実行(タイムラ...
-
ネストされたチェックボックス...
-
【javascript で動的に a タグ...
-
jquery ドロップダウンメニュー...
-
文字と数字が混在する要素のsor...
-
Jquery の slide.toggle で要素...
-
【jQuery】hoverしたn秒後にイ...
-
チェックボックスに入っている...
-
クリックで表示、非表示するメ...
-
同一ページ内で、任意の文字列...
-
オンマウスで画像ロールオーバ...
-
javascriptで、クリックしたら...
-
PHPでログインフォーム
-
<li>タグの順番を入れ替える方法
-
jQuery タブメニューへのダイ...
おすすめ情報