

複数ある<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 UIで、表示したタブの中...
-
タブ切り替えの初期表示について
-
【javascript で動的に a タグ...
-
jQueryでネスト構造の<li>がク...
-
開閉式ツリー型メニューについて
-
MAX関数を使ってからLEFT JOIN...
-
jQueryでクリックされた要素のi...
-
Slick.jsのオプションrtlについて
-
Javascriptで指定した日付と時...
-
jspでcssが読み込めない
-
libjpegライブラリの使い方につ...
-
【CSS】floatで左右に並べた...
-
[JavaScript]IE11にてフリック...
-
clear: bothの事で質問です。
-
オンマウスで流れる文字
-
外部javascriptの重複を防ぐには
-
jQueryの.text()関数でiframe
-
getElementByIdの戻り値がnull...
-
javascriptテキストBOX色を元に...
-
交互に入れ替わる画像を複数配置
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ネストされたチェックボックス...
-
jqueryのsortableで一部ソート...
-
jQueryでネスト構造の<li>がク...
-
jQueryでタブ切り替え
-
【jQuery】遅延実行(タイムラ...
-
jQuery appendの中身の出力につ...
-
javascript テキストエリアを1...
-
javascriptでEnterキーをtabキ...
-
「jQuery」アコーディオンメニ...
-
【jQuery】hoverしたn秒後にイ...
-
タグの表示順を入れ替え、
-
JQueryリストタグへのページネ...
-
id付きのHTMLテキストを変更→元...
-
特定のクラスを持つ<li>を非表...
-
jqueryのプラグインflexslider...
-
DOM の 要素の数え方について
-
jquery ドロップダウンメニュー...
-
【javascript で動的に a タグ...
-
同一ページ内で、任意の文字列...
-
【jQuery】ナビゲーションにhov...
おすすめ情報