javascript - 动态多级each() jQuery

标签 javascript jquery loops recursion each

我在使用 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++;
        });
    });
});

最佳答案

我认为你需要像下面这样的递归函数。演示: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'));

关于javascript - 动态多级each() jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16253657/

相关文章:

javascript - 如何隐藏谷歌图表中的列

javascript - 如何在 Ionic 中获取事件选项卡

javascript - JS/AngularJS 中的变量如何安全?

javascript - 如何打印这个javascript对象?

javascript - IE,通过onclick方法发送 'this'参数

javascript - blast.js 动画与 jquery ui 彩色动画

jquery - 将元素动态附加到 div 并设置 css 样式

matlab - matlab中无循环向量中的数字求和

javascript - 从数组创建嵌套列表

java - For 循环组合线