使用jQuery选择器,是否可以从另一个选择器中选择不是元素后代的所有元素。
例如,我想选择不 a
标记后代的所有th
标记。我现在能看到的唯一方法如下:
$('a').filter(function () {
return $(this).closest('th').size() == 0
})
答案 0 :(得分:6)
假设您正在寻找后代(因为a
元素作为th
元素的兄弟是无效的HTML),您可以使用:not
伪选择器来执行此操作:
$('a:not(th a)');
在使用document.querySelectorAll
的现代浏览器中,这应该相当快,但可能比旧版IE的原始浏览器慢。
在此处查看简单演示:http://jsfiddle.net/JR5sP/
答案 1 :(得分:0)
假设您确实想要按照您的问题提出要求(无论HTML事实无效)并过滤掉具有特定兄弟的元素,
你可以这样做:
$('a').filter(function() {
return $(this).siblings('b').length == 0;
}).css('color', 'orange');
HTML:
<div>
<b>Hello there</b>
<a>Don't select me!</a>
</div>
<div>
<a>Select me!</a>
<a>Select me too!</a>
</div>