Есть ли в jquery что-то, что позволило бы мне различать поведение при двойном щелчке и одиночном щелчке?
Когда я привязываю их к одному и тому же элементу, выполняется только один щелчок.
Есть ли способ подождать некоторое время перед выполнением одиночного щелчка, чтобы увидеть, щелкнет ли пользователь снова или нет?
Спасибо :)
jquery
jquery-selectors
Критья
источник
источник
Ответы:
Я обнаружил, что ответ Джона Стриклера не совсем оправдал мои ожидания. После того, как предупреждение запускается вторым щелчком в двухсекундном окне, каждый последующий щелчок вызывает другое предупреждение, пока вы не подождете две секунды перед повторным щелчком. Таким образом, с кодом Джона тройной щелчок действует как два двойных щелчка, тогда как я ожидал, что он будет действовать как двойной щелчок, за которым следует один щелчок.
Я переработал его решение, чтобы оно действовало таким образом и текло так, как мой разум может лучше понять. Я уменьшил задержку с 2000 до 700, чтобы лучше моделировать то, что я считаю нормальной чувствительностью. Вот скрипка: http://jsfiddle.net/KpCwN/4/ .
Спасибо за фонд, Джон. Я надеюсь, что эта альтернативная версия будет полезна другим.
источник
.on()
теперь используйте их оба$("document").on("click","a" function(e){
вместо этого в строке 5. Эта конструкция заменяет устаревшееdelegate()
использование. Вместо этогоdocument
вы можете / должны использовать любой родительский объект вa
DOM, насколько это возможно, который сохраняется во времени.Решение, данное из "Nott Responding", похоже, запускает оба события, щелчок и dblclick при двойном щелчке. Однако я думаю, что это указывает в правильном направлении.
Я сделал небольшое изменение, вот результат:
Попытайся
http://jsfiddle.net/calterras/xmmo3esg/
источник
Конечно, привяжите два обработчика, один к,
click
а другой кdblclick
. Создайте переменную, которая увеличивается при каждом нажатии. затем сбрасывается после установленной задержки. Внутри функции setTimeout вы можете что-то делать ...источник
Вероятно, вы могли бы написать свою собственную реализацию click / dblclick, чтобы она ждала дополнительного щелчка. Я не вижу в основных функциях jQuery ничего, что могло бы помочь вам в этом.
Цитата из .dblclick () на сайте jQuery
Не рекомендуется привязывать обработчики одновременно к событиям click и dblclick для одного и того же элемента. Последовательность запускаемых событий различается от браузера к браузеру: одни получают два события щелчка перед dblclick, а другие - только одно. Чувствительность к двойному щелчку (максимальное время между щелчками, которое определяется как двойной щелчок) может варьироваться в зависимости от операционной системы и браузера и часто настраивается пользователем.
источник
Посмотрите на следующий код
Демо находится здесь http://jsfiddle.net/cB484/
источник
Я написал плагин jQuery, который также позволяет делегировать события click и dblclick.
источник
$("body").multipleClicks('#mySelector', function(){ /* do something on click */},function(){/* do something on doubleclick */},300);
источник
я реализую это простое решение, http://jsfiddle.net/533135/VHkLR/5/
html code
код сценария
это не сильно тормозит
источник
Это решение работает для меня
источник
Я внес некоторые изменения в приведенные выше ответы, которые по-прежнему отлично работают: http://jsfiddle.net/arondraper/R8cDR/
источник
И, наконец, мы используем as.
источник
То же, что и ответ выше, но допускает тройной щелчок. (Задержка 500) http://jsfiddle.net/luenwarneke/rV78Y/1/
источник
Это метод, который вы можете использовать, используя базовый JavaScript, который мне подходит:
источник
Ниже мой простой подход к проблеме.
Функция JQuery:
Реализация:
Осмотрите выбранный элемент в Firefox / Chrome, чтобы увидеть, как щелчки данных идут вверх и вниз по мере того, как вы щелкаете, настройте время (1000) в соответствии с требованиями.
источник