Как заставить мое.right-меню DIV исчезать только через пару секунд, когда мышь витает в его родительском.right-menu-background? Дело в том, что когда вы быстро перемещаете курсор и начинаете, прямое меню DIV снова появляется много раз.
Как задержать анимацию за несколько мс?
Здесь код:
$(function(){
$(".right-menu-background").hover(function(){
$(this).find(".right-menu").fadeIn();
}
,function(){
$(this).find(".right-menu").fadeOut();
}
);
});
легко исправить это .stop()
$(function () {
$(".right-menu-background").hover(function () {
$(this).find(".right-menu").stop(true, true).fadeIn();
}, function () {
$(this).find(".right-menu").stop(true, true).fadeOut();
});
});
использование таймера
$(function () {
$(".right-menu-background").hover(function () {
var el = $(this).find(".right-menu");
var timer = setTimeout(function(){
el.stop(true, true).fadeIn();
}, 500);
el.data('hovertimer', timer);
}, function () {
var el = $(this).find(".right-menu");
clearTimeout(el.data('hovertimer'))
el.stop(true, true).fadeOut();
});
});
Используйте функцию stop() перед замиранием вызовов ...stop(true, true)
Если эти два параметра установлены в true, очередь анимации будет очищена, и последняя анимация будет воспроизведена, это вызовет странный эффект
$(this).find(".right-menu").stop(true, true).fadeIn();
Используйте .delay()
.
Вот код:
$(function(){
$(".right-menu-background").hover(function(){
$(this).find(".right-menu").delay(800).fadeIn(400);
},function(){
$(this).find(".right-menu").fadeOut(400);
});
});
Проверьте демо: http://jsfiddle.net/Mju7X/