JQuery отложенная обработка событий hover
Доброго Вам времени суток!
Есть двухуровневое меню следующего вида: <ul class="select"><li><a href="#">Раздел 1</a> <div class="select_sub show"> <ul class="sub"> <li><a href="#">подраздел меню 1.1</a></li> <li><a href="#">подраздел меню 1.2</a></li> <li><a href="#">подраздел меню 1.3</a></li> </ul> </div> </li> </ul> <ul class="select"><li><a href="#">Раздел 2</a> <div class="select_sub"> <ul class="sub"> <li><a href="#">подраздел меню 2.1</a></li> <li><a href="#">подраздел меню 2.2</a></li> </ul> </div> </li> </ul> Необходимо чтобы при прохождении по пунктам первого уровня курсором мыши (Раздел 1 -> Раздел 2, событий $(".select").hover()), соответствующее подменю прежде чем исчезнуть, задерживалось на экране на некоторое время (событие (".select_sub").hover()). Вопрос чисто эргономики - подменю быстро исчезает, прежде чем нерадивый посетитель доведет до него мышкой, проходя по другим элементом первого уровня) Полагаю, что необходимо увязать два события hover с помощью инструмента hoverIntent... но пока ничего толком не вышло, за неимением опыта: Мой, нерабочий вариант: Вот мой вариант: $(".select").hoverIntent({ sensitivity: 7, interval: 100, over: nothing, timeout: 0, out: outsub }); function outsub(){ // добавить задержку перед исчезновением подменю $(".select_sub").find("sub").delay(500).hide(); } function nothing() {} Предложите хотя бы алгоритм (структуру jQuery обработчиков) - реализовать попробую сам. Спасибо. |
Не могу понять, простая вроде конструкция:
$('.select, .current').hover(function(){ $(".select_sub").find(".sub").stop(true, true).fadeTo('fast', 1).show(); }, function(){ $(".select_sub").find(".sub").stop(true, true).delay(1000).fadeTo('fast', 0).hide(); }); Но вторая часть обработчика (плавное исчезновение) принципиально не работает! Подменю все равно исчезает мгновенно... Подскажите кто знает порядок событий в таком css меню. Что вызывает (или кто вызывает) hover для подменю, если на него курсор вообще не заходит... но css корректно его показывает и прячет. |
Уберите вызов .hide()
Анимация на самом деле срабатывает, просто hide скрывает элемент без задержек, несмотря на то, что в очереди ещё есть анимация. |
Часовой пояс GMT +3, время: 16:33. |