2016-02-10 167 views
2

如何在javascript中獲取嵌套的DOM元素而不是使用jQuery? 例子:JavaScript中立即嵌套的DOM聲明

$('#id') = document.getElementById('id'); 

我想這個jQuery選擇$('.nav > li')轉換爲JavaScript。我怎樣才能做到這一點?

+1

我認爲你正在尋找[querySelector](https://developer.mozilla.org/de/docs/Web/API/Document/querySelector)或[querySelectorAll](https://developer.mozilla.org/ de/docs/Web/API/Document/querySelectorAll) – Georg

+0

哦,抱歉@Georg,花了太多時間記住如何與markdown建立鏈接,但沒有看到您的評論。 – Gwendal

回答

3

你有一個非常好的函數document.querySelectorAll()可以選擇元素與CSS查詢。

document.querySelectorAll('.nav > li'); 

如果你打算使用它不止一次,你也可以使用一個變種,因此會覺得使用jQuery

var _ = document.querySelectorAll.bind(document) 
var menuItems = _('.nav > li'); 
+0

非常感謝。其工作 – Arunmadlur

+0

@阿倫不客氣,不要忘記標記爲已接受的答案 – Gwendal

0

只是爲了補充答案提示querySelectorAll,這裏是你會怎樣用老派的DOM操作實現這一點。

var selected = []; 

// get all elements that have the class 'nav' (.nav) 
var navs = document.getElementsByClassName('nav'); 

var i, j, children; 

// iterate over each nav and get a list of their direct children (.nav >) 
for(i = 0; i < navs.length; i++) { 
    children = navs[i].children; 

    // iterate over the children and select if the tag is li (.nav > li) 
    for(j = 0; j < children.length; j++) { 
    if(children[j].tagName === 'LI') { 
     selected.push(children[j]); 
    } 
    } 
} 

也可以作爲聲明式編程更適合這類任務的一個很好的例子。