选择不是指定元素后代的所有元素

tjw*_*ace 2 javascript jquery jquery-selectors

使用jQuery选择器,是否可以从另一个选择器中选择不是元素后代的所有元素.

例如,我想选择所有的a那些标签不是一个的后代th标签.我现在能看到的唯一方法如下:

$('a').filter(function () {
   return $(this).closest('th').size() == 0
})
Run Code Online (Sandbox Code Playgroud)

Yi *_*ang 6

假设您正在寻找后代(因为a元素作为元素的兄弟th是无效的HTML),您可以使用:not伪选择器来执行此操作:

$('a:not(th a)');
Run Code Online (Sandbox Code Playgroud)

在现代浏览器中使用它应该相当快document.querySelectorAll,但可能比旧版本的IE慢.

在这里看一个简单的演示:http://jsfiddle.net/JR5sP/