0

(他の質問から続く)

<div id="main">
    <div class="a">aaaa</div>
     <div class="b"><p>not me</p></div>
     <div class="b">bbbb</div> <!-- select this-->
     <div class="b">bbbb</div> <!-- select this-->
     <div class="c">cccc</div>
</div> ​

内部にbない クラスを持つすべてのdivを選択しようとしています。<p>not me</p>

私はこれを試しました:

$('div.b:not(:has(p:contains(not me)))').css('color', 'red'); 

しかし、いくつかの未知の理由から、それが機能しないというのは、面白いことに、:not()パーツを削除すると次のようになります。

$('div.b:has(p:contains(not me))').css('color', 'blue');

不要なdivが選択されるため、問題は:not

ライブデモ

私は他のもっと良い方法があることを知っています(私はその質問でいくつかを与えました)が、なぜ:not+:containsが一緒に見えないのか知りたいです。

4

3 に答える 3

3

.not代わりに使用できます:not

$('div.b').not(':has(p:contains("not me"))').css('color', 'red');

更新されたフィドル

于 2012-06-13T11:14:28.937 に答える
1

動作例:not + :contains

$('div.b:not(:contains("not me"))').css('color', 'cyan');

「notme」を含まないすべてのdiv.bの色を変更します。

于 2012-06-13T11:25:23.063 に答える
0

なんか関係あると思う:has

これを試して:

$('div.b:not(:contains(not me))').css('color', 'red');
于 2012-06-13T11:17:04.963 に答える