I have this code, which slides open a basket preview on a website I am working on. It stays open if the user is hovered on it, but I want it to have a two second delay before the callback for my hover is triggered. This is just in case the user didn't want the mouse to leave the basket area.
Below is the code I am using to animate the basket:
$('.cart_button, .cart_module').hover(function(){
$(".cart_module").stop().animate({top:'39px'},{duration:500});
}, function(){
$('.cart_module').stop().animate({top: -cartHeight},{duration:500})
});
Here is the code I tried to use, but had no affect:
$('.cart_button, .cart_module').hover(function(){
$(".cart_module").delay().animate({top:'39px'},{duration:500});
}, function(){
$('.cart_module').delay().animate({top: -cartHeight},{duration:500})
});
I've always managed this kind of things with the help of core
setTimeout
andclearTimeout
js functions.Here is an example on jsFiddle
Take a look at jquery.hoverIntent plugin too, it gives you a timeout on hover and out events
Looks like there may have been updates to jQuery in this vein since 2011. In Chrome I can use this sans timeout calls:
If you add the stop before the delay it works just fine:
How long do you want it to delay for????