7

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

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

我试过这样的事情:

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

但这会使我的浏览器崩溃。

这个也挂了我的浏览器:

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

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

4

3 回答 3

7

其他答案过于复杂。

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

-或者-

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

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

于 2011-02-11T16:38:56.397 回答
0
$('a').not(function() {
   return $(this).closest('table').length > 0;
});

或者如果它们始终是<td>标签的直接子级,则可能会更快

$('a').not(function() {
   return $(this).parent('td').length > 0;
});
于 2011-02-11T16:35:11.220 回答
0

采用:

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

看看这个小提琴

于 2011-02-11T16:38:43.927 回答