Щелчок и двойной щелчок по событию - PullRequest
2 голосов
/ 22 декабря 2011

Я пишу обработчики событий, используя jQuery, и у меня возник вопрос о событиях click и double-click. У меня есть элемент с классом "файл" на нем. К нему прикреплены два обработчика событий: один для простого щелчка по элементу, другой для двойного щелчка. Я хотел, чтобы оба запускались независимо друг от друга, но похоже, что событие click всегда срабатывает, когда происходит событие двойного щелчка.

$('.file').live('dblclick', function(//event handler code){});
$('.file').live('click', function(//event handler code){});

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

Ответы [ 3 ]

4 голосов
/ 22 декабря 2011

Как Джеймс упоминает в своем комментарии, не может быть одного без другого.Это будет чем-то вроде взлома, но вы можете сделать это независимо от таймера:

$('.file').live('dblclick', function() {


  $(this).data('doubleClicked', true);
  //event handler code

});

function SingleClickHandle(this)
{
  if (! $(this).data('doubleClicked'))
  {
  //event handler code
  }
}

$('.file').live('click', function(){

  $(this).data('doubleClicked', false);
  setTimeout('SingleClickHandler(this)', 500); // is half a second enough to consider it a double-click?

});
0 голосов
/ 31 января 2013

Не верь первым ответам, это действительно очень плохо.Используйте это вместо:

$('.file').on('click', function()
{
    $(this).css('background', 'blue');
});

$('.file').on('dblclick', function(event){
    event.preventDefault();
    $(this).css('background', 'green');                               
});

http://jsfiddle.net/H42KV/

0 голосов
/ 03 января 2012

Это стандартное поведение jquery. Вы должны использовать / делать что-то вроде этого: https://gist.github.com/399624

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