如果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');
});
}
});
}
});
这就是我得到的
我该怎么办?
谢谢!
Pluda
答案 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");