Написал скрипт, который открывает выпадающее меню. Скрипт умеет:
Но вот незадача. Если нажать на кнопку, которая открывает меню - меню откроется. Но если повторно нажать на эту кнопку, то меню не закрывается. Я, кажется, даже знаю, в чём проблема. Кликая на кнопку, которая открывает меню - к блоку с выпадающим меню добавляется класс active, а если нажать на эту кнопку ещё раз, то класс убирается. Но какой-то участок в коде снова добавляет этот класс. Я не могу понять, какой именно.
$(function() {
var touch = $('li .menu-link.drop-down');
var menuWrapper = $('.menu-item-list');
var w = $(window).width();
$(touch).on('click', function (e) {
e.stopPropagation();
e.preventDefault();
var menu = $(this).closest('li').find('.dropdown-list');
var isClosed = menu.is(':hidden');
if(w > 992) { menuWrapper.find('.dropdown-list').removeClass('active') }
else if(w < 992) { menuWrapper.find('.dropdown-list').slideUp(320) }
if(w > 992) { menu.toggleClass('active') }
else if(w < 992) {
if(isClosed) { menu.slideDown(325) }
}
});
$('body').on('click', function (e) {
var dropdown = $('.dropdown-list');
if(!$('.dropdown-list').is(e.target) && $('.dropdown-list').has(e.target).length === 0 && $(touch).has(e.target).length === 0) {
dropdown.removeClass('active');
}
});
$(window).resize(function(){
var menu = $('li .menu-link ~ .dropdown-list');
if(w > 992 && menu.is(':hidden')) {
menu.removeAttr('style');
}
});
});
Проблема в комбинации
menuWrapper.find('.dropdown-list').removeClass('active')
и
menu.toggleClass('active')
Вы сначала убираете у всех класс active
, a потом вызываете toggleClass
.
Добавьте not(menu)
в
menuWrapper.find('.dropdown-list').not(menu).removeClass('active')
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть селект, но сделан через ул списокСелект при клике открывается и при обратном клике на него закрывается, но если кликать вне его диапазоне...
Подскажите плз как сделать клик по фрейму на мобильных устройствах при открытии страницыНапример поставить лайк или запустить видео
Перерисовал input[type='number'] под нужный мне стильВсё работает отлично и точно так, как я и хотел
Можно ли как-то исправить код, что бы при клике на ссылку менялся маршрутТ