jQuery组合:not +:contains,它有用吗?

时间:2012-06-13 11:09:46

标签: javascript jquery jquery-selectors

(continue from other question)

<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

Live DEMO

我知道还有其他甚至更好的方法,(我甚至在这个问题上给了一些),但我很想知道为什么:not + :contains似乎不在一起。

3 个答案:

答案 0 :(得分:3)

您可以使用.not而不是:not

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

Updated fiddle

答案 1 :(得分:1)

工作:不 + :包含

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

会更改所有不包含&#34;而不是我&#34;的div.b的颜色。

答案 2 :(得分:0)

我认为这与:has

有关

试试这个:

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