2012-11-21 19 views
5

使用jQuery,我如何檢查每個嵌套的ul.item,計算LI的數量,然後在父頁面中返回該大小/長度span.someClass ?jquery - 在每個ul和返回值中計數li

<ul> 
    <li><span class="someClass">3</span> 
    <ul class="item" style="display:none"> 
     <li>count me</li> 
     <li>count me</li> 
     <li>count me</li> 
    </ul> 
    </li> 
    <li><span class="someClass">1</span> 
    <ul class="item" style="display:none"> 
     <li>count me</li> 
    </ul> 
    </li> 
    <li><span class="someClass">2</span> 
    <ul class="item" style="display:none"> 
     <li>count me</li> 
     <li>count me</li> 
    </ul> 
    </li> 
</ul> 
+3

顯示我們到目前爲止你已經嘗試過的代碼。 –

回答

1
<html> 
<head> 
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      var count = 0; 
      $('ul').each(function(){ 
       if(count != 0){ 

        var len = $(this).find('li').length; 

        $(this).parent().find('.someClass').html(len); 
       } 
       count++; 

      }) 
     }); 

    </script> 
</head> 
<body> 
<ul> 
    <li><span class="someClass"></span> 
    <ul class="item" style="display:none"> 
     <li>count me</li> 
     <li>count me</li> 
     <li>count me</li> 
    </ul> 
    </li> 
    <li><span class="someClass"></span> 
    <ul class="item" style="display:none"> 
     <li>count me</li> 
    </ul> 
    </li> 
    <li><span class="someClass"></span> 
    <ul class="item" style="display:none"> 
     <li>count me</li> 
     <li>count me</li> 
    </ul> 
    </li> 
</ul> 
</body> 
</html> 
3

試試這個,

Live Demo

$('.someClass').each(function(){  
    $(this).text($(this).next('ul').find('li').length); 
})​ 
+0

LI在UL內而不在SPAN內。 '$(this).next('ul')。find('li')。長度' –

5
$("ul.item").each(function() { 
    // reusabilty 
    var context = $(this); 
    // count and populate 
    context.prev(".someClass").text(context.children().length); 
}); 

省略.someClassprev()電話,如果這些span元素總是立即以前ul元素。在這種情況下,在prev中過濾不是必要的,也是多餘的。

0
​$("ul.item").each(function() { 
    var _c = $(this); 
    _c.siblings("span.someClass").html(_c.children("li").length); 
});​ 
0

循環通過每一個<li>使用jQuery:

$(document).ready(function(){ 

    var howMany; 
    // loop through every span.someClass 
    $('.someClass').each(function(){ 
    // loop through every <li> within that span.someClass 
    $('li').each(function(){ 
     // .index() is the current index of the $(this) object, it starts at 0, therefore .index()+1 
     howMany = $(this).index()+1; 
    }); 
    // Write your counted <li> in your <span> with .text(), manipulate the text within the <span> tags 
    $(this).text(howMany); 
    }); 
}); 

有用嗎?

+0

這個只顯示了一個值,謝謝 – dissident

-1
$('#yourelementid > li').length; 

這會爲你工作使用任何循環,而不是