Как не отрабатывать функцию, если в течении секунды мышь обратно пришла на элемент?
Вопрос следующий. Есть выпадающее меню на jquery. Суть такая: нужно чтобы после того, как мышь покинула меню, само меню скрывалось через секунду. Однако, при этом, если мышь вернется в течении секунды, то ничего не происходило.
Я пробовал через settimeout. Однако, если я возвращаюсь на предыдущее меню, то оно мгновенно закрывается. Вызов самого меню: var animationTime = 100; var sub = $('.wrap-cat-menu'); $(document).on('mouseenter', 'li.dropdown-cat', function() { if (sub.is(':visible')) { sub.slideUp(animationTime); } else { sub.slideDown(animationTime); } return false; }); Обработка скрытия меню: $(document).on('mouseleave', '.dropdown-cat', function() { setTimeout(function() { sub.slideUp(animationTime); return false; }, 1000); }); Однако, никак не могу решить проблему. Помогите, кто может и объясните, пожалуйста, как это работает..:help: |
Stay_Strong,
$(document).on('mouseleave', '.dropdown-cat', function() { sub.delay(1000).slideUp(animationTime); }); $(document).on('mouseenter', 'li.dropdown-cat', function() { if (sub.is(':visible')) { sub.stop(true,true).slideUp(animationTime); } else { sub.stop(true,true).slideDown(animationTime);//зачем остальной код кроме этой строки, непонятно } return false; }); |
Цитата:
http://javascript.ru/settimeout |
рони, благодарю. Я совсем не знал про delay().
ksa, вам тоже спасибо за ссылку. Я так-то читал, зато оттуда узнал про передачу this в функции. |
Часовой пояс GMT +3, время: 21:42. |