Javascript 选择不是指定元素后代的所有元素
使用jQuery选择器,可以从另一个选择器中选择不是元素后代的所有元素 例如,我想选择所有Javascript 选择不是指定元素后代的所有元素,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,使用jQuery选择器,可以从另一个选择器中选择不是元素后代的所有元素 例如,我想选择所有a标记,它们不是th标记的后代。我现在能看到的唯一方法是: $('a').filter(function () { return $(this).closest('th').size() == 0 }) 假设您正在查找子体(因为将元素作为th元素的同级元素是无效的HTML),您可以使用:not伪选择器来执行此操作: $('a:not(th a)'); 这在使用document.querySelec
a
标记,它们不是th
标记的后代。我现在能看到的唯一方法是:
$('a').filter(function () {
return $(this).closest('th').size() == 0
})
假设您正在查找子体(因为将
元素作为th
元素的同级元素是无效的HTML),您可以使用:not
伪选择器来执行此操作:
$('a:not(th a)');
这在使用document.querySelectorAll
的现代浏览器中应该非常快,但可能比旧版本IE的原始版本慢
请参见此处的一个简单演示:假设您确实希望按照问题的要求执行操作(不管无效的HTML事实),并过滤掉具有特定同级的元素
您可以这样做:
$('a').filter(function() {
return $(this).siblings('b').length == 0;
}).css('color', 'orange');
HTML:
你好
你是指兄弟姐妹还是后代?您的代码表明latterAs@lonesomeday暗示:a
元素不能是th
元素的兄弟。您可以发布您正在使用的html吗?将a
标记作为th
的同级标记是无效的htmltag@lonesomeday,@David Thomas,@Petah:我的意思是后代,而不是兄弟姐妹。为什么我认为:not
选择器不会这样做,我无法理解,但谢谢你的回答。演示也很棒。
<div>
<b>Hello there</b>
<a>Don't select me!</a>
</div>
<div>
<a>Select me!</a>
<a>Select me too!</a>
</div>