jquery .children()of .get()

时间:2011-07-26 04:09:15

标签: javascript jquery get children traversal

示例:

<ul>
  <li>
    <a></a>
  </li>
  <li>
    <a></a>
  </li>
</ul>

我可以使用$('ul').children('li').get(0);来获取列表项。如何使用.children('a')遍历树?

我尝试了类似$('ul').children('li').get(0).children('a');的内容,但这不起作用。


供将来参考:

  1. 除了遍历之外,我将对li做其他事情 到a,这就是我尝试使用.children()
  2. 的原因
  3. 索引将是动态的,而不是始终为0。
  4. 这就是为什么.eq()是首选答案。现在我可以做类似的事情:

    _load = function(index) {
      image_get = thumbs.children('li').eq(index);
    
      [...]
    
      $(function() {
        var img = $(new Image());
        img
          .load(function() {
            [...]
          }
          .attr('src', image_get.children('a').attr('href'));
      });
    }
    
    _load(0);
    

    ^^^ WIP。代码未完成。

3 个答案:

答案 0 :(得分:11)

.get()返回一个DOM元素。您可以将它包装回jQuery对象,如:

$($('ul').children('li').get(0)).children('a');

但是我认为你真正想要的是.eq()而不是.get()

$('ul').children('li').eq(0).children('a');

修改

正如里德在下面的评论中所指出的,

$('ul').children('li').eq(0).children('a');

在语义上等同于更简洁:

$('ul > li:first-child > a');

使用单个选择器与上面相同。

答案 1 :(得分:4)

为什么不把它全部放在选择器中,让它为你完成所有工作:

$('ul li:first a')

这将为您的示例HTML中的第一个<a>标记获取jQuery对象。

选择器逻辑的工作方式如下:查找所有ul标签,找到每个标签中的第一个li标签,然后获取每个第一个li标签中的所有标签。结果是jQuery选择,然后您可以将各种操作应用于。

在这里演示:http://jsfiddle.net/jfriend00/5qZP5/

答案 2 :(得分:1)

你可以这样做

$('ul li a:first');

http://jsfiddle.net/jasongennaro/yCAT6/

$('ul li a');会返回该列表中的所有a

:first仅过滤第一个。