jquery找到某个类的li并添加另一个类

时间:2011-09-15 13:21:01

标签: jquery class find

如果li有class ='parent',我没有得到如何循环ul并只添加一个类

我总是和我的新班级一起得到每个人......

这是代码

$('.navigation').find('li').each(function() {
        if($(this).hasClass('parent')) {
            $(this).find('li').each(function() {
                $(this).addClass("nivel_1");
                $(this).css('display', 'none');
                if($(".nivel_1").hasClass('parent')) {
                    $(".nivel_1").find('li').each(function() {
                        $(this).addClass("nivel_2");
                        $(this).css('display', 'none');
                    });
                }
            });
        }
    });

这就是我得到的

all items get nivel_1

我该怎么办?

谢谢!

Pluda

2 个答案:

答案 0 :(得分:1)

所以你有一个树视图,那些列表中有一个名为parent的类。

我没有测试过这个(我不知道jQuery是否有内置的功能)但你可以尝试类似的东西:

$(document).ready(function(){
    $('.navigation').find('li.parent > ul > li').addClass('nivel_X');
    $('.nivel_X').each(function(){
        var level = $(this).parents('.parent').size();
        $(this).removeClass('nivel_X').addClass('nivel_'+level);
    });
});

这个想法是你要用“父”类为li的每个immediant子类添加一个类,然后将该类命名为nivel_X,其中X被上面找到的父项数替换为......

以下代码也有效,我更喜欢它:

$('.navigation').find('li.parent > ul > li').addClass(function() {
    return 'nivel_'+$(this).parents('.parent').size();
});

答案 1 :(得分:0)

你真的不需要做一个循环。说实话,你的代码似乎比你的问题描述复杂得多,所以这可能太简单了。

$('li.parent').addClass("nivel_1");