Я осмотрелся и исследовал, почему это не работает, но кажется, что я в какой-то иной ситуации.
У меня есть действие по умолчанию для элемента навигации, который обрабатывает анимацию навигации при наведении:
$('.logoCont').hover(function(){
someFunction()...
}, function (){
someFunctionReverse()...
});
Теперь, когда дело доходит до того, чтобы быть на экране мобильного телефона, я скрываю навигацию и размещаю там кнопку. Затем кнопка управляет анимацией меню, выдвигающимся сбоку. Я добавил строку кода, которая добавляет класс к элементам навигации при нажатии этой кнопки.
$('.mobile-menuButton').click(function(){ //When you click the menu-show button
if($(this).hasClass('menuClosed')){ //Check to see if the menu is closed
$('.nav_hover').addClass('mobile_open'); //Add the mobile_open class to the navigation items
} else {
$('.nav_hover').removeClass('mobile_open'); //remove it
}
});
Итак, я изменил первую функцию зависания, чтобы сказать:
$('.nav_hover').not('.mobile_open').hover(function(){
someFunction()...
}, function (){
someFunctionReverse()...
});
Я надеялся, что это остановит someFunction()
когда мобильное меню отключено.
Вы можете посмотреть, что я делаю ЗДЕСЬ. Когда вы уменьшаете экран до 540px, медиа-запрос вступает в силу, и вы можете нажать кнопку меню.
Документация на .not()
ЗДЕСЬ. Второй пример в конце страницы - именно то, на что я надеялся.
Класс добавляется позже, а обработчик событий привязан ко всем элементам, которые соответствуют селектору в pageload (или всякий раз, когда он выполняется), и на самом деле не волнует то, что вы добавляете позже.
Вы должны проверить класс внутри обработчика события
$('.nav_hover').hover(function(){
if ( !$(this).hasClass('mobile_open') ) {
someFunction()...
}
}, function (){
if ( !$(this).hasClass('mobile_open') ) {
someFunctionReverse()...
}
});
делегация может также работать, но на самом деле это не будет работать с not()
или hover()
$(document).on({
mouseenter: function() {
someFunction()...
},
mouseleave: function() {
someFunctionReverse()...
}
}, '.nav_hover:not(.mobile_open)');
.on()
для щелчка по кнопке мобильного меню?
$(".logoCont:not(.mobile_open)")
это не должно быть$(".logoCont:not(.mobile_open)")
?