【问题标题】:Skip a delayed event in javascript跳过javascript中的延迟事件
【发布时间】:2020-07-19 08:00:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

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

    这个插件应该可以实现你想要的:http://benalman.com/projects/jquery-throttle-debounce-plugin/

    This question and answer 也可能有帮助。

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

    Here is a Stackblitz example,每 0.1 秒去一次鼠标滚轮事件。您只需要包含插件,然后执行以下操作:

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

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

    【讨论】:

    • 是的! @马特桑德斯。我可以忽略该事件,但如何调用触发的最终事件!
    • 我认为最终的排放应该可以工作,如果你试一试的话。如果您查看此处的“假装自动完成”选项:benalman.com/code/projects/jquery-throttle-debounce/examples/… 显示最终文本输入,它只是跳过在第一个事件和最后一个事件之间快速连续发生的任何事件。
    • 添加了一个示例@NoobDeveloper - 让我知道你的进展情况。
    猜你喜欢
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多