取消除最后一个之外的所有活动,

时间:2012-07-22 11:25:49

标签: javascript javascript-events

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

只有在3秒内没有更多事件时,最后一个事件才会进行一次。

例如。有一个按钮。我们会让用户根据需要多次点击此按钮,我们不会禁用此按钮。无论用户点击过多少次,我们都会认为它只有一次点击次数作为最后一次点击。当3秒内没有更多点击时,将执行click事件。

2 个答案:

答案 0 :(得分:3)

您正在寻找的内容称为debouncing。对于此任务,已经有一个极好的plugin/library from Ben Alman

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

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

fiddle

答案 1 :(得分: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)