2015-03-31 56 views
1

我有一個無序列表子菜單。dynamic .length jquery函數

我有一個無序列表,我想打印的孩子列表中的項目數量每個列表項包含,不過,我寫的函數只返回0

如果我有一個類或ID替換$(this)則但是,它會爲每個列表項目打印相同的編號,並且我需要它是動態的,返回每個單獨列表項目的.length.size()

你能指導我正確的方向嗎? :)

/*atomic mass counter*/ 
$(document).ready(function(mass){ 

var atomic = $(this).parent('li').length; 

$('.atom').html(atomic); 

}); 

類.atom是每個列表項的孩子這麼名單看起來是這樣的:

<ul> 
    <li> 
    <div class='atom'></div> 
    <ul> 
     <li><div class='atom'></div></li> 
     <li><div class='atom'></div></li> 
    </ul> 
    </li> 
    <li><div class='atom'></div></li> 
    <li><div class='atom'></div></li> 
    <li><div class='atom'></div></li> 
</ul> 

這裏有一個的jsfiddle:https://jsfiddle.net/6gzau45r/1/

+1

預期結果是什麼?大多數例子中沒有子菜單。不清楚你想要測量什麼 – charlietfl 2015-03-31 17:22:50

回答

1

這個答案使用jQuery的.each()方法遍歷所有li元素,並使用.find()方法計算有多少元素(和子元素)與類.atom每個li有。

/*atomic mass counter*/ 
$(document).ready(function (mass) { 

    $("li").each(function() { 

     var atomic = $(this).find('.atom').length; 

     $(this).find('.atom').first().html(atomic); 

    }); 

}); 

Fiddle

atomic計數被設置到每個li的第一.atom元件。

+0

你真棒:) – 2015-03-31 17:59:59

0

你不得不看的後代通過使用.children()。您的解決方案可能類似於:

$(document).ready(function(mass){ 
    // For each atom div 
    $('.atom').each(function() { 
     // Calculates the children li 
     $(this).html($(this).parent().children('ul').children('li').size()); 
    });  
}); 

這裏是一個FIDDLE:

https://jsfiddle.net/6gzau45r/6/