Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择不是指定元素后代的所有元素_Javascript_Jquery_Jquery Selectors - Fatal编程技术网

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

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

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

例如,我想选择所有
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>