选择不是具有特定类的元素的后代的所有元素

时间:2011-11-21 06:41:51

标签: javascript jquery css jquery-selectors

我正在努力想出一个选择器,它将选择所有textarea元素,但.noSpell类的后代除外。

所以我想要匹配:

<div>
   <textarea />
</div>

但不是这个

<div class="noSpell">
   <div>
      <textarea />
   </div>
</div>

我试过了:

$(":not(.noSpell) textarea")

但它不起作用,大概是因为虽然它与外部元素不匹配,但它可以匹配任何内部元素。

那么,我如何根据类名编写一个排除DOM树部分的选择器?

3 个答案:

答案 0 :(得分:4)

这个怎么样:

$("textarea").not(".noSpell textarea")

所有textareas,然后删除父项为.noSpell的那些。

答案 1 :(得分:-1)

以下适用于我:

$("textarea").not(".noSpell");

在firefox / firebug中测试过。

答案 2 :(得分:-1)

@cdmckay你的方法也是对的。

尝试将textarea创建为:

<textarea></textarea> 

并查看您的代码是否有效。

您可能希望这样做以查看代码是否有效

if($(":not(.noSpell) textarea").length > 0) {
    alert("there");
}
else {
    alert("not there");
}

干杯!