如何否定上下文

时间:2011-02-11 16:30:23

标签: jquery css-selectors negate

我想选择元素,但如果他们的祖先之一与某个选择器相匹配则不会。

例如,假设我想匹配不是表的后代的所有<a>个节点。

我试过这样的事情:

$("a", ":not(table *)");

但是我的浏览器崩溃了。

这个也挂了我的浏览器:

jQuery("a", ":not(table td)");

查询的页面非常大,有很多非常大的表。所以,我需要一些表现也很好的东西。有什么想法吗?

3 个答案:

答案 0 :(得分:6)

其他答案过于复杂。

$('a').not('table a');

-OR -

$('a:not(table a)');

jQuery函数中的第二个参数是搜索元素的上下文,但选择:not(table)将选择不是表的每个元素,包括表的后代。通常,当您拥有要搜索的特定文档或元素时,您希望使用context参数。

答案 1 :(得分:0)

$('a').not(function() {
   return $(this).closest('table').length > 0;
});

如果他们总是<td>代码的直接子女

,可能会更快
$('a').not(function() {
   return $(this).parent('td').length > 0;
});

答案 2 :(得分:0)

使用:

$("a").not("td a")

查看this fiddle