wangler
@wangler

Как добавить класс во многоуровневом списке?

Здравствуйте.
Есть многоуровневый список вида:
<ul>
 <li><ul>
      <li><ul>
                 <li class="selected"></li>
            </ul>
      </li>
      </ul>
</li>
</ul>


Необходимо в случае присутствия класса selected на любом из уровней добавить такой же класс для всех уровней-родителей. Спасибо.
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 2
@IceJOKER
Web/Android developer
Как-то так:
if($('ul .selected').length != 0){
  $('ul').append( "<li class="selected"></li>" );
}
Ответ написан
Комментировать
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Попробуйте такую функцию:
function setSelected(topUL) {
    var top = typeof topUL === 'string' ? document.querySelector(topUL) : topUL;
    var selected = top.querySelectorAll('li.selected');
    for(var i = selected.length; i--;) {
        var current = selected[i];
        while(current !== top) {
            current = current.parentNode;
            if(current.nodeName === 'LI') {
                current.classList.add('selected');
            }
        }
    }
}
на вход принимает селектор или domNode самого верхнего <ul> в дереве
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы