我想弄清楚一個乾淨的方式來聚合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