jQuery:不常用火鼠移动事件

前端之家收集整理的这篇文章主要介绍了jQuery:不常用火鼠移动事件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图找出一种简洁的方法来聚合mousemove事件,以便我确保我的代码调用,但每250-300毫秒只能调用一次.

我曾考虑使用类似下面的内容,但想知道是否有更好的模式,或者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插件是你真正需要的!

解决方法

您的代码很好,除非您在将其设置为null之前应该是 clear the timeout,否则它可能会泄漏:
window.clearTimeout(mousemove_timeout);
mousemove_timeout = null;

作为替代方案,您可以将mousemove / mousestopwindow.setInterval结合使用

var timer = null;
var isIntervalSet = false;

$('body').mousemove(function() {
    if (isIntervalSet) {
        return;
    }
    timer = window.setInterval(function() {
        /*
        * Run my code...
        */    
    },250);
    isIntervalSet = true;
}).mousestop(function() {
    isIntervalSet = false;
    window.clearTimeout(timer);
    timer = null;
});

猜你在找的jQuery相关文章