1

ul複数のアイテムを含むメニューがあります。私が欲しいのは、トップメニューのテキストの色を赤に変更することです。

ただし、これは子アイテムではなく、最初のアイテムをクリックしたときにのみ機能します。

たとえば、クリックしhydrotherapyて単語を赤に変更したいとしますServices。親。何か案が?

$("nav.menu>ul>li").children().click(function() {
    alert("asd");
    var item1 = $(this),
        primeira_ul = item1.closest('.menu>ul#nav>li>a.t2');

    item1.addClass('font_red');
    return false;
});

デモ

4

3 に答える 3

2

タグの最初の子を検索でき$(this)ますa$(this)イベント ソースではなく、$("nav.menu>ul>li")既に最上位の要素を参照していることに注意してくださいli

おそらく、兄弟の設定も解除したいでしょう。

$("nav.menu>ul>li").on("click", function() {
    var item1 = $(this),
        primeira_ul = item1.closest('.menu>ul#nav>li>a.t2');

    $(this).siblings().find("> a").removeClass('font_red');
    $(this).find("> a").first().addClass('font_red');
    return false;
});

JSフィドル

于 2012-10-29T23:22:38.077 に答える
1

ul.first_level考えられる方法の 1 つは、最初のラウンドで最も近いものを探し、次に を使用.siblings()してリンク自体を取得することです (コードを大幅に変更するのではなく、問題のある部分を変更するだけです)。

$("nav.menu>ul>li").children().click(function() {
    var item1 = $(this);
    var theLink = item1.closest('.first_level').siblings('.t2');

    theLink.addClass('font_red');
    return false;
});​

jsFiddle デモ

于 2012-10-29T23:20:16.430 に答える
0

別の方法:

$("nav.menu>ul>li").children().click(function(e) {
  e.preventDefault();
  $(this).parents('#nav>li:has(.t2)').find('>a').addClass('font_red');
});​
于 2012-10-29T23:48:00.817 に答える