我在使用jQuery创建多级each()时遇到了问题。这是我的代码,但这被限制在3个级别。我想让它在无限级别下工作。
这是一个JsFiddle演示链接:http://jsfiddle.net/cWJH5/1/
HTML
<nav id="navMenu">
<ul>
<li><a href="#">DEMO</a>
</li>
<li><a href="#">DEMO</a>
</li>
<li><a href="#">DEMO</a>
<ul>
<li><a href="#">DEMO</a>
</li>
<li><a href="#">DEMO</a>
</li>
<li><a href="#">DEMO</a>
<ul>
<li><a href="#">DEMO</a>
</li>
<li><a href="#">DEMO</a>
</li>
<li><a href="#">DEMO</a>
<ul>
<li><a href="#">DEMO</a>
</li>
<li><a href="#">DEMO</a>
</li>
<li><a href="#">DEMO</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>JS
Startlevel = 0;
$('#menu > ul').each(function (i) {
$(this).addClass('item-' + i + ' level-' + Startlevel );
menuLevel++;
$(this).find('> li > ul').each(function (i) {
$(this).addClass('item-' + i + ' level-' + Startlevel );
menuLevel++;
$(this).find('> li > ul').each(function (i) {
$(this).addClass('item-' + i + ' level-' + Startlevel );
menuLevel++;
});
});
});发布于 2013-04-27 23:17:50
我认为你需要像下面这样的递归函数。演示:http://jsfiddle.net/x5WDc/
var level = 0;
var assign_classes = function (list) {
list.each(function (i) {
$(this).addClass('item-' + i + ' level-' + level);
level++;
assign_classes($(this).find('> li > ul'));
level--;
});
};
assign_classes($('#menu > ul'));发布于 2013-04-27 23:19:04
也许就是这样:
$('#menu ul').each(function () {
var Startlevel = $(this).parents('#menu ul').length;
$(this).addClass('item-' + $('#menu ul.level-' + Startlevel).length + ' level-' + Startlevel);
});https://stackoverflow.com/questions/16253657
复制相似问题