【发布时间】:2012-07-22 11:25:49
【问题描述】:
是否有可能这样做..假设在一段时间内有很多相同的事件触发很多时间。我们将取消之前的所有事件,只使用最后一个。
只有在3秒内没有更多事件时,最后一个事件才会持续一次。
例如。有一个按钮。我们将让用户根据需要多次单击此按钮,并且我们不会禁用此按钮。无论用户点击了多少次,我们都将其视为最后一次点击。当 3 秒内没有更多点击时,将执行点击事件。
【问题讨论】:
标签: javascript javascript-events
是否有可能这样做..假设在一段时间内有很多相同的事件触发很多时间。我们将取消之前的所有事件,只使用最后一个。
只有在3秒内没有更多事件时,最后一个事件才会持续一次。
例如。有一个按钮。我们将让用户根据需要多次单击此按钮,并且我们不会禁用此按钮。无论用户点击了多少次,我们都将其视为最后一次点击。当 3 秒内没有更多点击时,将执行点击事件。
【问题讨论】:
标签: javascript javascript-events
您要查找的内容称为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);
}())
【讨论】:
Cowboy。因此,您必须使用$.debounce 而不是Cowboy.debounce。这一切都记录在 Ben Almans 网站上 :)
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)
【讨论】: