Проблема в том, что событие hover
не поддерживает оба аргумента функции (вход и выход) при использовании с .delegate()
. Вам нужно будет использовать mouseenter
и mouseleave
вместо hover
.
Изменить на это:
$('#mid-wrap').delegate('#lists', 'mouseenter', function() {
listsMouseIn = true;
}).delegate('#lists', 'mouseleave', function() {
listsMouseIn = false;
});
К вашему сведению, если эти объекты HTML являются статическими, а не добавляются динамически, вы можете значительно упростить свой код, используя прямые обработчики событий для этих реальных объектов, а не .delegate и просто stopPropagation () при обработке щелчка. Затем вы сначала увидите клик в объекте и не будете обрабатывать один и тот же клик несколько раз, в результате чего вам понадобятся все эти глобальные флаги для отслеживания состояния.
Вы также можете просто использовать видимость объекта в качестве механизма обнаружения того, открыто или закрыто меню, а не глобальной переменной.