[英]Add count classes for nested list elements with jQuery
I have this HTML: 我有这个HTML:
<ul class="parent">
<ul>
<li>
<ul></ul>
</li>
<li>
<ul>
<li>
<ul></ul>
</li>
</ul>
</li>
</ul>
</ul>
I need to add count classes for all nested lists in this markup, to reach this: 为此,我需要为所有嵌套列表添加计数类:
<ul class="parent">
<ul class="level-1">
<li>
<ul class="level-2"></ul>
</li>
<li>
<ul class="level-2">
<li>
<ul class="level-3"></ul>
</li>
</ul>
</li>
</ul>
<ul class="level-1">
<li>
<ul class="level-2"></ul>
</li>
<li>
<ul class="level-2">
<li>
<ul class="level-3"></ul>
</li>
</ul>
</li>
</ul>
</ul>
So i do this: 所以我这样做:
var parent_ul = $('.parent');
if (parent_ul.doesExist()){
var parent_ul_lists = parent_ul.find('ul');
parent_ul_lists.each(function(){
var i;
for (i = 0; i < parent_ul_lists.length; i++) {
$(this).eq(i).addClass('level-' + i);
}
})
}
But in output i have class test level-1
for all of parent list childrens. 但是在输出中,我对所有父母名单上的孩子都进行了
level-1
课堂测试。 Can anybody help? 有人可以帮忙吗?
You can use this; 您可以使用它;
var parent_ul = $('.parent');
var parent_ul_lists = parent_ul.find('ul');
parent_ul_lists.each(function(){
$(this).addClass('level-'+ ($(this).parents().length -1)/2);
});
See working demo here: http://jsfiddle.net/huseyinbabal/qmGcC/ 在此处查看工作演示: http : //jsfiddle.net/huseyinbabal/qmGcC/
Note: Inspect element in output to see class assigned 注意:检查输出中的元素以查看分配的类
You need some good 'ole recursion! 您需要一些很好的“ ole递归”!
Check out this JSFiddle UPDATE: corrected jsFiddle link 签出此JSFiddle UPDATE:更正了jsFiddle链接
Here is the code: 这是代码:
function labelChildUL(element, count) {
element.children().each(function (index, value) {
var $me = $(value);
if ($me.is("ul")) {
$me.addClass("level-" + (count + 1));
labelChildUL($me, count + 1);
}
else
{
labelChildUL($me, count);
}
});
}
$(document).ready(function () {
var $parent = $('#parent');
labelChildUL($parent, 0);
});
I also updated your html to use id
instead of class
for "parent": 我还更新了您的html,以使用
id
代替“ parent”的class
:
<ul id='parent'>
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.