Имея mousedown / mouseup и dblclick в jQuery - PullRequest
5 голосов
/ 29 января 2010

Всякий раз, когда обработчик mousedown или mouseup присоединяется к элементу, dblclick не может быть присоединен (не будет работать, если присоединен), хотя это кажется достаточно справедливым, есть ли способ восстановить функциональность dblclick без переписывания его с нуля (вздох. ..) Или я что-то упускаю в распространении событий?

Ответы [ 4 ]

4 голосов
/ 29 января 2010

Это работает - поместите этот код в Firebug на этой самой странице, и вы увидите, как он работает (попробуйте дважды щелкнуть текст вашего вопроса):

($('.post-text')
    .mousedown(function () { console.log('down'); })
    .mouseup(function () { console.log('up'); })
    .dblclick(function () { console.log('dbclick'); }));

Не имеют Firebug ? Хватай, я подожду!

2 голосов
/ 07 ноября 2014

Хотя этот вопрос действительно старый, я хочу показать, как мне это удалось.

Этот блок не будет работать:

        $(element).on('mousedown', function(event) {
            ...
        });

        $(element).on('dblclick', function(event) {
            ...
        });

Но вы можете использовать этот фрагмент для создания того же обработчика поведения:

        var clicks = 0, delay = 400;
        $(element).on('mousedown', function(event) {
            event.preventDefault();
            clicks++;

            setTimeout(function() {
                clicks = 0;
            }, delay);

            if (clicks === 2) {
                // double click event handler should be here
                clicks = 0;
                return;
            } else {
                // mousedown event handler should be here
            }
        });
1 голос
/ 29 января 2010

Ваш mousedown и mouseup не могут:

  1. сделать e.stopPropagate и т. Д.
  2. возврат ложь

и это должно работать, если ваш код не конфликтует между методами

0 голосов
/ 25 сентября 2018

Параметр event.detail будет подсчитывать, сколько последовательных кликов у вас было, поэтому его можно использовать для обнаружения двойного щелчка.

$('#mybutton').on('click',function(e) {
  console.log("User left clicked!"); // do select code
  if (e.button == 0 && e.detail == 2) {
    console.log("User left doubleclicked!"); // do action code
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...