Написал скрипт, который открывает выпадающее меню. Скрипт умеет:
Но вот незадача. Если нажать на кнопку, которая открывает меню - меню откроется. Но если повторно нажать на эту кнопку, то меню не закрывается. Я, кажется, даже знаю, в чём проблема. Кликая на кнопку, которая открывает меню - к блоку с выпадающим меню добавляется класс 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')
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть селект, но сделан через ул списокСелект при клике открывается и при обратном клике на него закрывается, но если кликать вне его диапазоне...
Подскажите плз как сделать клик по фрейму на мобильных устройствах при открытии страницыНапример поставить лайк или запустить видео
Перерисовал input[type='number'] под нужный мне стильВсё работает отлично и точно так, как я и хотел
Можно ли как-то исправить код, что бы при клике на ссылку менялся маршрутТ