首页 > 解决方案 > 跳过javascript中的延迟事件

问题描述

我正在尝试跳过 JavaScript 中的延迟事件。说(如果我连续 4 次鼠标滚轮,第一个会被触发,然后是第二个、第三个和第四个。在我的场景中,如果第一个事件被触发并且当第二/第三/第四个事件延迟或缓慢时,我想要说第二个和第三个事件被触发并且必须直接触发最后一个事件(比如第四个事件))

这可能使用 JS/Jquery 吗?如果可能的话,谁能建议我一些样品!

对不起,如果我没有多大意义,我是这里的初学者。

标签: javascriptjquery

解决方案


听起来您在描述一个去抖动功能,它将在第一个事件上触发,但在定义的时间范围内合并后续事件。

这个插件应该实现你正在寻找的东西:http: //benalman.com/projects/jquery-throttle-debounce-plugin/

这个问题和答案也可能会有所帮助。

基于此页面上的自动完成示例http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/,应触发最终(您的示例中为第 4 个)事件,但任何中间事件快速连续发生将被跳过。

这是一个 Stackblitz 示例,每 0.1 秒将鼠标滚轮事件反跳一次。您只需要包含插件,然后执行以下操作:

$(document).ready(function () {
    $('body').bind('mousewheel', $.debounce(100, debounceEvent));
    function debounceEvent(event) {
        // Process mouse wheel event here
        console.log(event);
    }
});

如果您进行快速滚动,则只应发出最后一个事件。


推荐阅读