Добавляем классы к дочерним элементам «одноуровневого» списка
Проблема в том, что есть список, с дочерними списками, но из-за сложности структуры CMS, эти дочерние списки не являются вложенными ul > ul, их структура выглядит примерно так
<ul Class="sidebar-menu"> <li class="item has-submenu">Campaign 1</li> <li class="subitem active"><a >Child 1 Campaign 1</a></li> <li class="subitem"><a>Child 2 Campaign 1</a></li> <li class="item has-submenu">Campaign 2</li> <li class="subitem"><a>Child 1 Campaign 2</a></li> <li class="subitem"><a>Child 2 Campaign 2</a></li> <li class="item has-submenu">Campaign 3</li> <li class="subitem"><a>Child 1 Campaign 3</a></li> <li class="subitem"><a>Child 2 Campaign 3</a></li> </ul>
Нужно, чтобы при активном дочернем элементе, всем его соседним элементам одного родителя задавался класс active-menu.
Такой скрипт решает эту проблему:
var $liMenu = $(".sidebar-menu li");
var $activeMenu = $(".sidebar-menu li.active");
var $ind = $activeMenu.index();
var prev = 0;
$activeMenu.addClass('active-menu');
$activeMenu.prevUntil('.has-submenu').addClass('active-menu');
$activeMenu.nextUntil('.has-submenu').addClass('active-menu');
for ( var i = $ind; i > 0; i--){
if ( prev == 0 ) {
if ( $liMenu.eq($ind).prev().hasClass("has-submenu") ) {
$liMenu.eq($ind).prev().addClass('active-menu');
prev = $ind-1;
break;
} else {
prev = $ind-1;
}
}
else {
if ( $liMenu.eq(prev).prev().hasClass("has-submenu") ) {
$liMenu.eq(prev).prev().addClass('active-menu');
prev = prev-1;
break;
} else {
prev = prev-1;
}
}
}
За помощь благодарность Algiz’у.
Стандарт Open Graph разработан социальной сетью Facebook. Он позволяет контролировать превью, которое формируется при публикации…
[vc_row][vc_column][vc_column_text]Задача такая: необходимо сделать вывод на каждой странице гистограммы с оценками. Всего 5 баллов, за…
Для того, чтобы не прописывать градиенты с вендорными префиксами для каждого элемента, достаточно использовать миксины…
Цель — сделать pop-up окно без использования Fancybox. В общем, его можно сделать даже без…