2010-08-12 221 views
6

我正在尋找一種方法來收集所有<a>標籤,然後在使用Mootool 1.1或純javascript的數組中加載。如何選擇嵌套的dom元素

<ul class="menu"> 
    <li> 
    <ul> 
     <li><a href="#">Group One</a> 
     <ul> 
      <li><a href="#">I want</a></li> 
      <li><a href="#">I want too</a></li> 
     </ul> 
     </li> 
     <li><a href="#">Group Two</a> 
     <ul> 
      <li"><a href="#">I want</a></li> 
      <li><a href="#">I want too</a></li> 
     </ul> 
     </li> 
    </ul> 
    </li> 
</ul> 

編輯解決方案:

謝謝大家,你的反應已經幫我找到一個更精確的解決方案。

MooTools的1.1:@奧斯卡

$$("ul.menu ul li ul li a"); 

@貝爾巴托夫

document.getElements("ul.menu ul li ul li a"); 

保持Geeking :)

+0

' document.getElemnts'是mootools,不是原生的javascript - $$別名。 :)有一種觀點認爲,在選擇器中過於精確並不總是能夠帶來最佳的性能結果或可維護性 - 除非您需要精確地排除不同的鏈接,否則我認爲這太過矯枉過正。一個更優雅的解決方案,當然更快的表演將是一個類的鏈接本身,我們並不總是會改變標記。 :) – 2010-08-13 07:18:35

回答

4
// for the links of the first ul.menu on the page 
var menuLinks = document.getElement("ul.menu").getElements("a"); 
// or you can get all links children of all uls with class menu 
var menuLinks = document.getElements("ul.menu a"); 
+0

真棒,保持'geeking'! ++ – 2010-08-13 06:23:48

+0

似乎現在不工作 – 2016-05-12 09:44:16

+1

@AdiPrasetyo use document.querySelector();代替。 EG:'document.querySelector( 「ul.menu一個」);' – Lotix 2016-12-15 11:12:24

5

我不知道,如果你想以某種方式限制作用,但讓所有頁面中的錨點元素很容易:

var links = document.getElementsByTagName('a'); 

如果你想限制一個元素中搜索,設置元素的ID,這樣就可以很容易地找到它,並在元素上使用getElementsByTagName

var links = document.getElementById('menu').getElementsByTagName('a'); 
+0

感謝您的迴應,但document.getElementsByTagName將只選擇文檔中的所有鏈接,我想要做的就是選擇主菜單鏈接。 – 2010-08-12 14:22:43

+0

@Q_the_novice:然後在菜單元素上設置一個id,以便您可以使用'getElementById'方法找到它,然後在該元素上使用'getElementsByTagName'方法來查找其中的鏈接。 – Guffa 2010-08-12 15:57:05

1

$$('.menu a')

+0

Thankx這也適用 - ++ – 2010-08-13 06:23:03

+0

$$已被棄用,但它是'this.document.getElements()'的別名,但這個選擇器有點寬泛。如果你有''div class =「menu」>' – 2010-08-13 06:33:23

+0

@Dimitar:目前的Joomla! CMS版本(1.5)使用mootools 1.1,所以直到Joomla! 1.6(使用mootools 1.2)正式發佈,$$選擇器對開發者仍然有用。 另請檢查我的編輯在頂部。 – 2010-08-13 07:03:50