JQuery: как определить, будет ли после mouseup событие click? - PullRequest
3 голосов
/ 29 февраля 2012

Есть ли способ узнать в обработчике jQuery onmouseup, что за этим событием последует событие click для того же элемента?

У меня есть обработчик события для гиперссылки меню, которая связывает себя, когда пользователь нажимает на элемент или «отбрасывает» (как при перетаскивании) на элемент.Я хочу избежать преждевременной отмены привязки обработчика при наведении мыши, если следующий шаг click.

Я понимаю, что могу самостоятельно отслеживать события mousedown и mouseup или иным образом взломать решение (например, подождать 50 мсек, чтобы увидеть, скоро ли произойдет щелчок), но я надеялся избежать развертывания собственной реализацииесли есть что-то встроенное для этой цели.

Ответы [ 2 ]

3 голосов
/ 29 февраля 2012

Нет ничего встроенного, потому что это действительно соответствует вашим потребностям.Таким образом, было бы много кода и документации для поддержки, если бы jQuery обрабатывал любую комбинацию кликов, длинных кликов, перемещений и т. Д.

Также сложно дать вам фрагмент кода, который удовлетворяет вашим потребностям, но setTimeoutобычно это первый шаг, с чем-то вроде этого:

obj.mouseup = function (){
   obj.click = action; // do action 
   setTimeout ( function() {
       obj.click = functionOrigin // after 500 ms, disable the click interception
   }, 500);
};
2 голосов
/ 29 февраля 2012

вы можете использовать $ (селектор) .data ('events') для этого

$('div').mouseup(function(){
 if($(this).data('events').click){
  console.log('Has a click event handler')
 }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...