javascript - 滚动时执行代码,但每隔 0.5 秒

标签 javascript jquery

当我使用鼠标滚轮时,我会遇到这种情况,但我不希望这种情况立即发生,比如在我可以再次增加 i 后等待 50 毫秒。

var i = 0; 

function doSomething() {
  i += 1;
  console.log(i);
}

需要等待一段时间才能再次使用鼠标滚轮。

有人可以展示或解释解决方案吗?

http://jsbin.com/lisozuyami/1/edit?html,js,console,output

最佳答案

您可以尝试使用超时(查看示例)。或者您可以使用一些节流/去抖动插件,例如 this one

var i = 0;

function doSomething() {
  i += 1;
  console.log(i);
}

var actionTimer = null;

function delayedHandling(){
  clearTimeout(actionTimer);
  actionTimer = setTimeout(function() {
    doSomething();
  }, 50);
}

$(window).on('DOMMouseScroll', function(e) {
    if (e.originalEvent.detail > 0) {
      delayedHandling();
    }
  })
  .on('mousewheel', function(e) {
    if (e.originalEvent.wheelDelta < 0) {
      delayedHandling();
    }
  });

关于javascript - 滚动时执行代码,但每隔 0.5 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30761067/

相关文章:

jquery - 在 jQuery 中的同一 div 中分离 "click on text"和 "click on background"事件

javascript - PHP - 不安全的文件编辑,删除所有数据

javascript - 有没有办法使过渡属性适用于 javascript 选定项?

javascript - 在 React 中保存用户添加的输入的状态

javascript - 避免在选择日期后重新打开日期选择器

javascript - 如何按2个数据属性对div进行排序?

javascript - Bootstrap Modal-Manager 禁用溢出

javascript - Vue2 - 用文本输入突出显示文本的方法

javascript - Dropzone JS - 所有文件上传后重定向

javascript - 在 IE 中测量 Javascript 性能