顶层,我的意思是没有任何匹配祖先的元素,就像span*
下面的代码片段。我想知道是否有任何简单的方法可以只选择span*
s 而不是选择span
s。
span*
span*
div
span*
span
span
span*
向投票结束这个问题的 dgknca、CBroe、Bill P. 提出问题,您不清楚这个问题的哪一部分?
更新:
我最终使用了 TreeWalker:
const nodes = [];
const treeWalker = document.createTreeWalker(rootNode, NodeFilter.SHOW_ELEMENT, {
acceptNode: node => {
if (node.matches(['span'])) {
nodes.push(node);
return NodeFilter.FILTER_REJECT;
}
nodes.push(node);
return NodeFilter.FILTER_ACCEPT;
}
});
while (treeWalker.nextNode()) { }
return nodes;
我认为这个问题不应该被关闭。我相信这会帮助很多人。
在选择器语法中,没有办法表达“没有相同类型祖先的元素”(甚至是特定类型的元素)。
显而易见的方法是获取每个元素,然后递归检查所有祖先以确保没有一个匹配的tagName
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句