我想弄清楚一个干净的方式来聚合mousemove事件,以便确保我的代码被调用,但每250-300毫秒只有一次。jQuery:不经常触发mousemove事件
我已经考虑过使用类似以下,但不知道是否有更好的方式,或者说jQuery提供,将做同样的事情:
var mousemove_timeout = null;
$('body').mousemove(function() {
if (mousemove_timeout == null) {
mousemove_timeout = window.setTimeout(myFunction, 250);
}
});
function myFunction() {
/*
* Run my code...
*/
mousemove_timeout = null;
}
编辑:接受的答案下面这种情况完全适用于这种情况,但是,我发现回答中提供的mousestop()
功能实际上消除了我对聚合的需求,所以如果您正在阅读此问题并寻找答案,请参阅mousestop插件是否是您真的需要!
+1 - 感谢您的提示!这是最好的/最干净的方式吗?看起来像一个黑客... – 2011-01-10 15:44:11
是的,这确实是一个黑客,`window.setInterval`会更适应这种情况。 – 2011-01-10 15:49:41
接受! - 原来,`mousestop`函数正是我所需要的,并且完全消除了超时代码。非常感谢! – 2011-01-10 16:02:58