@AnnaUniq

Почему не работает конструкция if else?

Вот ссылка на пример dev.sholex.ru/acc.html
Необходимо, чтобы при клике на элемент li ему же присваивался класс active, но при клике на другой li - удалялся
В примере имеется аккордеон, где предпоследний пункт меню (о компании) имеет двойную вложенность, так вот как реализовать, чтобы при клике на пункт меню Вакансии его родительский li(о компании) не терял класс active
пробую конструкцией if else на проверку display block у дочернего элемента ul, но как-то не выходит
if ($('.sub-menu').css('display') !== 'block'){
    		$(this).addClass('active');  
		}
		else{
			$('li.menu-item-has-children').removeClass('active');
		};

может кто-то другое решение подскажет
спасибо!
  • Вопрос задан
  • 189 просмотров
Пригласить эксперта
Ответы на вопрос 2
impwx
@impwx
Разработчик
Я бы предложил такой вариант:

1. При клике запомнить элемент, на который кликнули
2. Сбросить класс `active` у всех элементов меню
3. Проставить класс `active` для сохраненного элемента
4. В цикле проставить `active` для его родителей, пока не выйдем за пределы меню
Ответ написан
Комментировать
igorperegudov
@igorperegudov
Frontend-developer
$('.sub-menu').css('display') - так задается css для блока "$('.sub-menu').css('display': 'block)

вы делайте проще,
$('li').on('click', function () {
    if($(this).hasClass('active')){
        $(this).removeClass('active');
    }else {
        $(this).addClass('active');
        $(this).siblings().removeClass('active');
    }
});
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы