是否可以這樣做。假設在一段時間內有很多同樣的事件觸發很多時間。我們將取消所有以前的活動,並僅使用最後一個活動。取消除最後一個以外的所有事件,
只有當沒有更多的事件持續3秒時,最後的事件纔會進行一次。
例如。有一個按鈕。我們會讓用戶多次點擊此按鈕,我們將不會禁用此按鈕。無論用戶點擊了多少次,我們都會認爲這只是一次點擊次數而已。點擊事件將在3秒內沒有更多點擊時執行。
是否可以這樣做。假設在一段時間內有很多同樣的事件觸發很多時間。我們將取消所有以前的活動,並僅使用最後一個活動。取消除最後一個以外的所有事件,
只有當沒有更多的事件持續3秒時,最後的事件纔會進行一次。
例如。有一個按鈕。我們會讓用戶多次點擊此按鈕,我們將不會禁用此按鈕。無論用戶點擊了多少次,我們都會認爲這只是一次點擊次數而已。點擊事件將在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);
}())
謝謝,不知道 – user907860 2012-07-22 12:17:29
牛仔與jquery 1.7.2不兼容..無論如何仍然是一個很好的幫助。 – 2012-07-22 13:46:30
@SarawutPositwinyu這是不對的;)你沒有用jQuery標記你的問題,所以我認爲你正在尋找一個香草JS解決方案。如果jQuery可用,插件會將其兩個函數添加到jQuery名稱空間,而不是創建自己的「Cowboy」。因此,而不是'Cowboy.debounce',你將不得不使用'$ .debounce'。它全部記錄在Ben Almans站點:) – Andreas 2012-07-22 18:14:30
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)
您好![可以請你提供一些小提琴示例](http://jsfiddle.net/AvczB/)? – Stano 2012-07-22 12:02:34