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

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

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

 $('a').filter(function () { return $(this).closest('th').size() == 0 }) 

假设您正在寻找后代(因为有一个元素作为元素的兄弟是无效的HTML),您可以使用:not pseudo-selector来执行此操作:

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

在使用document.querySelectorAll现代浏览器中,这应该非常快,但可能比旧版本的IE慢。

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

假设您确实想要按照您的问题要求(无论HTML事实无效)并过滤掉具有特定兄弟的元素,

你可以这样做:

 $('a').filter(function() { return $(this).siblings('b').length == 0; }).css('color', 'orange'); 

HTML:

 
Hello there Don't select me!

见http://jsfiddle.net/JR5sP/1/