元の投稿:なぜこの単純なスクリプトが機能しないのですか?
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();
}
(これ)が使えないのはなぜですか?
ドットはクラス名の一部ではありません。これは、CSS/jQueryセレクター表記でのみ使用されます。代わりにこれを試してください:
_if ($('#navigation a').hasClass('active')) {
$(this).parent().addClass('active');
}
_
$(this)
がそのアンカーを参照している場合、if条件にはjQueryコールバックスコープがないため、アンカーも$('#navigation a')
に変更する必要があります。
または、次を使用することもできます。
if ($('#navigation a').is(".active")) {
$(this).parent().addClass("active");
}
JQueryは何があるかわからないので、$(this)
を使用することはできません。あなたは物事を複雑にしています。 $('#content h1.aktiv').hide()
を実行できます。クラスが存在するかどうかをテストする理由はありません。
機能しない理由は、this
はifステートメント内では特定の意味を持たないため、this
が定義されているスコープのレベル(関数)に戻る必要があるためです。
例えば:
$('#element1').click(function() {
console.log($(this).attr('id')); // logs "element1"
if ($('#element2').hasClass('class')) {
console.log($(this).attr('id')); // still logs "element1"
}
});
条件をif ($(this).hasClass('active'))
に変更することをお勧めします
また、hasClass
とaddClass
は、セレクターではなく、クラス名を取ります。
したがって、.
を含めるべきではありません。
誰かがWordPressを使用している場合は、次のようなものを使用できます。
if (jQuery('.dropdown-menu li').hasClass('active')) {
jQuery('.current-menu-parent').addClass('current-menu-item');
}