Как избежать двойного щелчка непрерывно? - PullRequest
2 голосов
/ 05 декабря 2010
$('#element').dblclick(function(e){  
    console.log("event");
});               

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

Ответы [ 4 ]

2 голосов
/ 05 декабря 2010

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

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

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

setHandler();
2 голосов
/ 05 декабря 2010
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);
}
0 голосов
/ 05 декабря 2010
var lastClick = 0;
$('#element').dblclick(function(e){ 
  var time = (new Date()).getTime();
  if(time > lastClick + 1000) {
    lastClick = time;
    console.log("event");
  }
}
0 голосов
/ 05 декабря 2010

Я бы использовал плагин doTimeout , в частности, функцию debounce: http://benalman.com/code/projects/jquery-dotimeout/examples/debouncing/. Попробуйте первый пример для второй ссылки, которую я разместил. Затем просто измените его для двойного щелчка вместо keyup.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...