2010-12-05 4 views
2
$('#element').dblclick(function(e){ 
    console.log("event"); 
});    

Когда я нажимаю элемент с очень быстрым щелчком, он показывает событие много раз. Но я хочу, чтобы пользователь предотвращал двойной щелчок непрерывно, может пропустить его в течение 1 секунды, как я могу это сделать? Спасибо.Как избежать непрерывного двойного щелчка?

ответ

2
var click_allowed = true; 
$('#element').dblclick(function(e){ 
    if (!click_allowed) return; 
    console.log("event"); 
    click_allowed = false; 
    window.setTimeout(function() { 
    click_allowed = true; 
    }, 1000); 
} 
+1

`true` и` false `ДОЛЖНО записываться в нижнем регистре. В противном случае вы получите ссылочную ошибку. – jAndy 2010-12-05 15:48:59

0
var lastClick = 0; 
$('#element').dblclick(function(e){ 
    var time = (new Date()).getTime(); 
    if(time > lastClick + 1000) { 
    lastClick = time; 
    console.log("event"); 
    } 
} 
2

Вы можете использовать .one, чтобы убедиться, что ваш обработчик события выполняется только один раз, а затем вы можете переназначить его раз достаточно времени прошло (live demo):

function dblclickHandler(e){ 
    console.log("event"); 
    setTimeout(setHandler, 1000); 
} 

function setHandler() { 
    $('#element').one('dblclick', dblclickHandler); 
} 

setHandler(); 
Смежные вопросы