jquery найти li с определенным классом и добавить другой класс - PullRequest
2 голосов
/ 15 сентября 2011

Я не понимаю, как зациклить ul и просто добавить класс, если у li есть class = 'parent'

Я всегда получаю каждый li с моим новым классом ...

это код

$('.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 ]

1 голос
/ 15 сентября 2011

Итак, у вас есть древовидное представление, а у тех, у кого есть список, есть класс с именем 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 с помощью класса "parent", а затем назовете этот класс nivel_X, где X заменяется числом родителей, которое он находит выше ...

Следующий код тоже работает, и он мне больше нравится:

$('.navigation').find('li.parent > ul > li').addClass(function() {
    return 'nivel_'+$(this).parents('.parent').size();
});
0 голосов
/ 15 сентября 2011

вам не нужно делать цикл. Хотя, если честно, ваш код кажется намного более сложным, чем описание вашей проблемы, поэтому, возможно, это слишком просто.

$('li.parent').addClass("nivel_1");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...