选择不是指定元素后代的所有元素
使用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/