この非常に奇妙なシナリオを実行しました。
if ($('#content h1').hasClass('active')) {
$(this).hide();
}
のみ、この意志:私は(これ)を使用することはできませんなぜ
if ($('#content h1').hasClass('active')) {
$('#content h1').hide();
}
これはH1を隠していないのだろうか?スクリプトに何か問題がありますか?
この非常に奇妙なシナリオを実行しました。
if ($('#content h1').hasClass('active')) {
$(this).hide();
}
のみ、この意志:私は(これ)を使用することはできませんなぜ
if ($('#content h1').hasClass('active')) {
$('#content h1').hide();
}
これはH1を隠していないのだろうか?スクリプトに何か問題がありますか?
これは正しい動作です。 if
ステートメントthis
の文脈では、h1
要素への参照ではなく、document
要素(または、関数内にある場合は関数)への参照を保持します。あなたが行うことができ
:この場合
$('#content h1').foreach(function() {
if (!$(this).hasClass('active')) {
$(this).hide();
}
});
、ヤンは説明したように、これはあなたがそれが(見出し要素)であることを期待コンテキストになります。何をしたい
は、あなたの「これ」は、上述したように、あなたのオブジェクトを参照しませんおそらく
var h1 = $('#content h1')
if (h1).hasClass('active')) {
h1.hide();
}
です。
もっとシンプルでパフォーマンスの高いものは $( '#content h1.active')。hide(); – Sam
ステートメント$('#content h1').hasClass('active')
は、$(this)
を使用しようとしているjQueryオブジェクトではなく、ブール値(trueまたはfalse)を返します。 hasClass
hereの使用方法を参照してください。
あなたが特定のセレクタに一致するすべての要素に対してアクションを実行しようとしている場合、このセレクタを与える代わりにしてみてください:
$("#content h1.active").hide();
これが含まれている「コンテンツ」のid
属性を持つすべての要素を検索しますclass
属性が「active」である要素h1
をすべて非表示にします。
^'$(this)' :-) – fearofawhackplanet