6

元の投稿: この単純なスクリプトが機能しないのはなぜですか?

if ($('#navigation > ul > li > ul > li > a').hasClass('.active')) {
    $(this).parent().parent().parent().addClass(".active");
}

編集:

これはH1を隠しません:

if ($('#content h1').hasClass('aktiv')) {
    $(this).hide();
}

これだけで:

if ($('#content h1').hasClass('aktiv')) {
    $('#content h1').hide();
}

(これ)を使えないのはなぜですか?

4

6 に答える 6

29

ドットはクラス名の一部ではありません。CSS/jQuery セレクター表記でのみ使用されます。代わりにこれを試してください:

if ($('#navigation a').hasClass('active')) {
    $(this).parent().addClass('active');
}

そのアンカーを参照する場合、if 条件には jQuery コールバック スコープがないため、同様$(this)に変更する必要があります。$('#navigation a')

于 2010-11-17T18:58:29.507 に答える
3

または、次を使用できます。

if ($('#navigation a').is(".active")) {
    $(this).parent().addClass("active");
}
于 2010-11-17T18:59:46.373 に答える
0

おそらく条件を次のように変更したいと思うでしょう。if ($(this).hasClass('active'))

また、セレクターではなくclassnameshasClassaddClass取ります。 したがって、 を含めるべきではありません。
.

于 2010-11-17T18:58:52.190 に答える
0

$(this)jQueryはそれが何であるかを知らないため、使用できません。あなたは物事を複雑にしすぎているようです。できます$('#content h1.aktiv').hide()。クラスが存在するかどうかをテストする理由はありません。

于 2010-11-17T22:53:22.690 に答える
0

が機能しない理由は、if ステートメント内で特定の意味がないためです。定義されているスコープのレベル (関数)thisに戻る必要があります。this

例えば:

$('#element1').click(function() {
    console.log($(this).attr('id')); // logs "element1"

    if ($('#element2').hasClass('class')) {
        console.log($(this).attr('id')); // still logs "element1"
    }
});
于 2010-11-17T22:54:14.553 に答える