1

このhtmlを持つ:

<div><h1>1</h1></div>
<div>2</div>
<div><h1>3</h1></div>

これは 0 を返します:

$("div").filter(":not(:not(:has(h1)))").length

ここでいくつかのテストを行いましたが、最初の 2 つのセレクターは問題ありません (フィルター処理なしで、1 つだけです)。

これは私のコードよりも単純なモデルです。1つはプラグインによって追加され、もう1つはそのオプションで受信されているため、両方のnotを​​避けることはできません。

4

2 に答える 2

2

なぜこれが起こっているのか分かりませんが、バージョン 1.8 で修正されました。これは、jQuery 1.8 が動作する同じコードです。

何らかの理由でバージョンを変更できない場合、回避策の 1 つは for を変更すること.filterです.notここで動作しています。

于 2012-09-21T13:14:52.163 に答える
0

ダブル 'not's like this ' を削除しようとしましたか?

alert($("div").length);
alert($("div").filter(":not(:has(h1))").length);
alert($("div").filter(":has(h1)").length);​
于 2012-09-21T13:41:27.583 に答える