我试图找几个小时的答案,但我找到的并没有解决我的问题 我有一堆嵌套的无序列表,其中在最后一级有跨度值
<ul>
<li>
<a>
<span>0</span>
</a>
<ul>
<li>
<a>
<span>0</span>
</a>
<ul>
<li>
<a>
<span>1</span>
</a>
</li>
<li>
<a>
<span>2</span>
</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a>
<span>0</span>
</a>
<ul>
<li>
<a>
<span>0</span>
</a>
<ul>
<li>
<a>
<span>5</span>
</a>
</li>
<li>
<a>
<span>6</span>
</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
我想将这些值加到上面的元素范围内 我的代码看起来如下。
$($("li a span").get().reverse()).each(function()
{
var itemValue = parseInt($(this).text());
var parentSpan = $(this).parent().parent().parent().parent().find("a span:first");
var parentVal= parseInt(parentSpan.text());
parentVal=parentVal + itemValue;
parentSpan.text(parentVal.toString());
});
这导致以下
28 <-- here is the problem ...
3
1
2
11
11
5
6
第一个li也是同一级别中所有其他li的总和 我所期望的是,只有子级别应该总结到父级别,如第二部分
3 <-- this should only count childs not same level elements
3
1
2
11
11
5
6
非常感谢任何帮助
提前致谢 唐
答案 0 :(得分:0)
您可以尝试下面的代码,希望这会对您有帮助。
var $topUl = $($('ul')[0]);
$.each($topUl.children('li'), function(index, val){
$ulEle = $(val).children('ul');
var sum1 = 0;
$.each($ulEle.children('li'), function(index, val){
var sum2 = 0;
$.each($(val).find('ul span'), function(index2, val){
sum2+=parseInt($(val).text());
});
$(val).children('a').find('span').text(sum2);
sum1+=sum2;
});
$(val).children('a').find('span').text(sum1);
});