我需要一个递归选择所有子元素但不会选择元素(以及那些子元素)的函数,如果它们具有" foo"属性。
<section>
<div>
<span foo>
<input>
</span>
</div>
<p>
<img>
</p>
</section>
//should return [section, div, p, img]
我需要原始的Javascript
编辑: 我试过这样的事情:
$tag.querySelectorAll(":not([foo])")
但是querySelectorAll(&#34;:not([foo])&#34;)仍将返回未选中元素的子元素。
答案 0 :(得分:1)
您可以在此处使用element.querySelectorAll()
:not
修饰符以及[attr]
选择器:
var nonFooElements = parentElement.querySelectorAll("*:not([foo])");
请注意,这种调用会非常昂贵,因为选择器不以id或类名开头,所以不要做大量的调用。