jquery从.each()循环中计算第一级元素

时间:2012-07-26 20:20:16

标签: jquery each

有没有人知道如何从.each()循环中计算元素的第一级子元素?

例如,我的页面上有几个列表,如此......

<ul>
    <li><a href="#">item1</a></li>
    <li><a href="#">item2</a></li>
    <li><a href="#">item3</a></li>
    <li><a href="#">item4</a></li>
</ul>
<ul>
    <li><a href="#">item1</a></li>
    <li><a href="#">item2</a></li>
    <li><a href="#">item3</a></li>
    <li><a href="#">item4</a></li>
    <li><a href="#">item5</a></li>
    <li><a href="#">item6</a></li>
</ul>
<ul>
    <li><a href="#">item1</a></li>
    <li><a href="#">item2</a></li>
    <li><a href="#">item3</a></li>
</ul>

我正在尝试遍历每个列表并确定它有多少列表项,除了使用jQuery .size()也将标记计为元素。我只需要知道有多少列表项。

另外,我不知道如何做到这一点,因为使用类似jQuery('ul&gt; li')的东西。在.each()循环中无法访问size(),因为我引用了每个与jQuery不同(这个)。有没有办法做一些像jQuery(这个'&gt; li')?因为这对我不起作用:)

这是我一直在尝试的,但我没有运气:

jQuery('ul').each(function() {
    var count = jQuery(this).find('li').size();
    alert(count);
});

3 个答案:

答案 0 :(得分:2)

您可以使用length属性:

$('ul').each(function() {
    var count = $(this).find('li').length;
    alert(count);
});

或者如果您想选择直接子li标签,可以尝试:

$('ul').each(function() {
    var count = $('> li', this).length;
    alert(count);
});

答案 1 :(得分:0)

'&GT;' immediateChild selector

您可以在使用$('> li')或使用替代

时使用$(this).find()
$('ul').each(function(){
  var length = $('>li', this).length;
  alert(length);
  });

答案 2 :(得分:0)

试试这个。我觉得它好多了。

var rt = 0;
$('ul').each(function() {
    rt++;    
});

alert(rt);