@RoadMoscow

Как свернуть активный пункт меню и закрыть предыдущий?

Здравствуйте. Подскажите пожалуйста как сделать, чтобы открывался пункт меню по которому кликнули, а предыдущий закрывался? Вот страница боковое меню. Там разворачиваются категории и подкатегории. Сейчас если кликать по стрелкам то открываются все, а нужно чтобы ранее открытый пункт закрывался.

Вот код самого меню

$('.catalog_aside li').has('ul').addClass('down');
    $('.catalog_aside > ul li.down > ul').before('<span class="btn-dropdown"><i class="fas fa-chevron-right"></i></span>');
    $('.catalog_aside .down .btn-dropdown').each(function(){
        if($(this).siblings('ul').is(':visible')){
            $(this).addClass('active');
        }
    });
    $('.catalog_aside .down .btn-dropdown').click(function(){

        $(this).parent().toggleClass('open');
        if($(this).siblings('ul').is(':visible')){
            $(this).siblings('ul').slideUp();
            $(this).removeClass('active');
        }else{
            $(this).siblings('ul').slideDown();
            $(this).addClass('active');
        }
    });


Спасибо.)
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Закрывать остальные пункты перед открытием нового:

$('.catalog_aside .down .btn-dropdown').click(function(){

$('.catalog_aside ul ul').css({display: 'none'})
.siblings('.btn-dropdown').removeClass('active')
.parent('li').removeClass('open');

        $(this).parent().toggleClass('open');
        if($(this).siblings('ul').is(':visible')){
            $(this).siblings('ul').slideUp();
            $(this).removeClass('active');
        }else{
            $(this).siblings('ul').slideDown();
            $(this).addClass('active');
        }
    });
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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