Is there a way to detect when the mouse has stopped moving in jquery?
+2
A:
Yes, use setTimeout and clear it every time when the mouse moves. If the mouse hasn't been moved in the time specified in setTimeout, then you can assume mouse has stopped moving. Utilizing jQuery, you could do something like this:
var stop_timeout = false;
$(function() {
$().mousemove(function() {
clearTimeout(stop_timeout);
stop_timeout = setTimeout(function() {
alert("The mouse has stopped.");
}, 1000);
});
});
It's a bit heavy to set and unset timeouts every time the mouse moves, but it should work for your purposes.
Tatu Ulmanen
2009-12-20 20:47:30
You should move `var stop_timeout = false;` within the anonymous function since it doesn't need to be anonymous.
Justin Johnson
2009-12-20 20:59:34
@Justin. answerplease with your version of the code. Thanks.
Moshe
2009-12-20 21:21:39
A:
Use hoverintent, it does all this for you. It has an interval that tracks your mouse movements and knows when your acceleration has slowed (so you're trying to "truly" hover over something).
It's also incredibly easy to use. You basically just need to change your
$( selector ).hover( ... )
to
$( selector ).hoverIntent( ... )
Dan Beam
2009-12-20 21:41:36