jQuery通过给定索引递归查找元素

时间:2013-09-04 13:58:16

标签: jquery arrays recursion addclass

我有一个带有嵌套无序列表(ul)的菜单,我有一个包含列表项索引的数组,这些索引是从父索引获得的。但我不能用jQuery将类添加到递归列表项。

例如:

我有一个数组[1,1,0],我必须添加类到列表项,其中包含链接My Link 2,Sub Link 2和Deep Menu 1:

<ul>
    <li><a href="">My Link 1</a></li>
    <li>
        <a href="">My Link 2</a>
        <ul>
            <li><a href="">Sub Link 1</a></li>
            <li>
                <a href="">Sub Link 2</a>
                <ul>
                    <li><a href="">Deep menu 1</a></li>
                    <li><a href="">Deep menu 2</a></li>
                    <li><a href="">Deep menu 3</a></li>
                </ul>
            </li>
        </ul>
    </li>
    <li><a href="">My Link 3</a></li>
</ul>

我希望我能解释一下我的问题。英语不是我的母语,即使用我的母语,我也无法正确解释我的问题。

1 个答案:

答案 0 :(得分:0)

据我所知:

var current = $('div.parent'), // parent of master ul
    arr = [1, 1, 0],
    yourClass = 'myclass';

for (var i = 0; i < arr.length; i++) {
    // we add +1 because nth-child is 1,n based, not 0,n
    current = current.find('>ul>li:nth-child(' + (arr[i] + 1) + ')');
    if (current.length === 0) break;

    current.addClass(yourClass);
}

这会将该类添加到<li />代码中,如果您希望将其设置为<a />,只需执行current.find('a').addClass('yourClass');代替current.addClass(yourClass);