Как не отрабатывать функцию, если в течении секунды мышь обратно пришла на элемент?
Вопрос следующий. Есть выпадающее меню на 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, время: 02:54. |