[英]Check if button has been clicked within time
這是我想做的:
這就是我嘗試過的
var clicked = false;
$('#button').click(function(){
A();
});
function A(){
clicked = true;
setTimeout(function(){
clicked == false;
)}, 1000);
setTimeout(function(){
if ( clicked == false ) {
B();
}
)}, 1000);
}
我認為代碼將適用於場景1和2 ,但是如何使它也適用於場景3 ?
編輯:剛發布時看到了一個相關的SO問題 ,我沒有通過搜索找到。 請稍等,我檢查是否重復
我認為您正在尋求限制(緩沖)點擊次數,也就是說,您想要在執行操作之前等待指定的時間,如果在限制期內再次發生同一事件,請重新開始等待。 http://jsfiddle.net/8QdLV/
function B() {
console.log('Clicked')
}
var timeoutId;
$('#button').click(function() {
clearTimeout(timeoutId);
timeOutId = setTimeout(B, 1000);
});
可以概括為http://jsfiddle.net/8QdLV/
function throttle(handler, buffer) {
var timeoutId;
buffer = buffer || 1000;
return function(e) {
clearTimeout(timeoutId);
var me = this;
timeoutId = setTimeout(function() {
handler.call(me, e);
}, buffer);
}
}
$('button').click(throttle(function() {
console.log('Throttled click');
});
順便說一句,您可能想使用https://code.google.com/p/jquery-debounce/ ,它也提供了$.throttle
函數
使用setInterval
函數。
請注意,用布爾值記錄單擊是不夠的,否則在t=0
兩次t=0.99
兩次點擊都將在t=1
被重置操作清除。
var clicked = false
, hnd_reset = null
, hnd_check = null;
$('#button').click(function() {
A();
});
function A(){
clicked = true;
hnd_reset = setTimeout(function(){
clicked = false;
hnd_reset = null;
)}, 1000);
if (hnd_check === null) {
hnd_check = setInterval(function(){
if ( !clicked && (hnd_reset === null)) {
clearInterval( hnd_check );
hnd_check = null;
B();
}
)}, 1000);
}
}
或者,您也可以跟蹤從0開始的int的點擊次數,如果跟蹤器為0,則允許執行B
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.