我正在使用jquery,并且我希望获得特定类型的所有元素,这些元素不是特定类型节点的后代。
E.g。我的DOM就像:
<div id='idthatiknow'>
<div>
<span>good1</span>
</div>
<div>
<span>good2</span>
</div>
<p>
<span>bad</span>
<div>
<span>bad</span>
</div>
</p>
<div>
我需要一个选择器,它会让我good1
和good2
而不是bad
。但是,我需要从我认识的身份开始。所以我在想,像#idthatiknow not(p) span
,但这不起作用。请记住,我的实际dom要复杂得多 - 这只是一个简化的例子。
那么,有没有办法检索作为X的后代而不是Y的后代的所有元素?
答案 0 :(得分:1)
您可以随时过滤父母
$('#idthatiknow span').filter(function() {
return $(this).closest('p').length === 0;
});
请注意,它不适用于最后一个,因为DIV
不能在P
内,因此它会被浏览器移动。< / p>
答案 1 :(得分:0)
有人发布了答案,但随后将其删除了。我正在重新发布它,因为它是正确的,但出于对他们删除答案的任何理由的尊重,我不会将它们命名并将使这个社区维基。如果他们想再将其发回,我会将其标记为正确,否则我会将此答案标记为正确。
他们发布了:
#idthatiknow > div span { /* your styles here */}
/* all spans with a direct child of div from #idthatiknow */
#idthatiknow span:not(#idthatiknow > div span) { /* your styles here */}
/* all spans except the ones with a direct child of div from #idthatiknow */
第二个解决了我的问题 - 它允许选择任意元素的任意后代,排除另一个元素的后代。