jQuery:不常用火鼠移动事件

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

我曾考虑使用类似下面的内容,但想知道是否有更好的模式,或者jQuery提供的东西会做同样的事情:

  1. var mousemove_timeout = null;
  2.  
  3. $('body').mousemove(function() {
  4. if (mousemove_timeout == null) {
  5. mousemove_timeout = window.setTimeout(myFunction,250);
  6. }
  7. });
  8.  
  9. function myFunction() {
  10. /*
  11. * Run my code...
  12. */
  13.  
  14. mousemove_timeout = null;
  15. }

编辑:下面接受的答案将完全适用于这种情况,但是,我发现答案中提供的mousestop()功能实际上消除了我对聚合的需求,所以如果你正在阅读这个问题并寻找答案,请参阅如果mousestop插件是你真正需要的!

解决方法

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

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

  1. var timer = null;
  2. var isIntervalSet = false;
  3.  
  4. $('body').mousemove(function() {
  5. if (isIntervalSet) {
  6. return;
  7. }
  8. timer = window.setInterval(function() {
  9. /*
  10. * Run my code...
  11. */
  12. },250);
  13. isIntervalSet = true;
  14. }).mousestop(function() {
  15. isIntervalSet = false;
  16. window.clearTimeout(timer);
  17. timer = null;
  18. });

猜你在找的jQuery相关文章