2017-09-25 76 views
-5

我需要一個遞歸選擇所有子元素但不選擇元素(以及那些子元素)的函數,如果它們具有「foo」屬性的話。如何以遞歸方式選擇元素下的所有子項Javascript

<section> 
    <div> 
    <span foo> 
    <input> 
    </span> 
    </div> 
    <p> 
    <img> 
    </p> 
</section> 
//should return [section, div, p, img] 

我需要原始JavaScript,請

編輯: 我想是這樣的:

$tag.querySelectorAll(":not([foo])") 

但querySelectorAll( 「:不是([富])」)仍然會返回兒童未選定的元素。

+0

林堅持與不選擇的孩子來說,我已經使用querySelectorAll試過(「:不是([富])」),但仍然會返回下的元素美孚。 –

回答

1

您可以使用element.querySelectorAll()這裏的:not改性劑,與[attr]選擇在一起:

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

要知道,這種通話將適度昂貴,因爲選擇不與ID或開始classname,所以不要做大量的工作。

我改編自這一個這樣的回答:https://stackoverflow.com/a/21975970/5009210

+0

這不會選擇FooElements,但它會選擇foo元素的子元素。這是我堅持的部分。 –

相關問題