1

これを行うことは可能ですか..ある期間に同じイベントが多数発生したと仮定します。以前のイベントをすべてキャンセルし、最後のイベントのみを使用します。

最後のイベントは、3秒間イベントがない場合にのみ1回だけです。

例えば。ボタンがあります。ユーザーがこのボタンを何度でもクリックできるようにし、このボタンを無効にすることはありません。ユーザーがこれを何度クリックしても、最後のクリックとして1回のクリックカウントと見なされます。クリックイベントは、3秒以内にクリックがなくなると実行されます。

4

2 に答える 2

3

あなたが探しているものはデバウンスとして知られています。このタスクのために、BenAlmanからのすばらしいプラグイン/ライブラリがすでにあります。

(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 に答える