如何递归选择元素Javascript下的所有子项

时间:2017-09-25 19:31:47

标签: javascript recursion

我需要一个递归选择所有子元素但不会选择元素(以及那些子元素)的函数,如果它们具有" 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;)仍将返回未选中元素的子元素。

1 个答案:

答案 0 :(得分:1)

您可以在此处使用element.querySelectorAll() :not修饰符以及[attr]选择器:

var nonFooElements = parentElement.querySelectorAll("*:not([foo])");

请注意,这种调用会非常昂贵,因为选择器不以id或类名开头,所以不要做大量的调用。

我改编了这个答案:https://stackoverflow.com/a/21975970/5009210