1

是否有可能这样做..假设在一段时间内有很多相同的事件触发了很多时间。我们将取消所有以前的事件,只使用最后一个。

只有当 3 秒内没有更多事件时,最后一个事件才会持续一次。

例如。有一个按钮。我们将让用户根据需要多次单击此按钮,并且我们不会禁用此按钮。无论用户点击了多少次,我们都将其视为最后一次点击。当 3 秒内没有更多点击时,将执行点击事件。

4

2 回答 2

3

您正在寻找的东西被称为去抖动对于这个任务,Ben Alman已经有一个很棒的插件/库。

(function() {
    var button = document.getElementsByTagName("button")[0],
        func = Cowboy.debounce(1000, function() { console.log("click fired!"); });

    button.addEventListener("click", func);
}())​

小提琴

于 2012-07-22T12:09:51.153 回答
1
var domButton = document.getElementById('some-button'),
    timeOut;
domButton.addEventListener('click', function(e) {
    if (e.clientX && e.clientY) {
        e.preventDefault();
        clearTimeout(timeOut);
        timeOut=setTimeout(function({document.getElementById('somebutton').click()},3000);
    }
},false)
于 2012-07-22T12:06:51.663 回答