2010-08-12 150 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