jQuery mobile – для каждого события прямого трансляционного события должно существовать эквивалентное событие click?

Я заменил события jQuery live click на jQuery для мобильных событий, чтобы повысить отзывчивость.

У меня такое чувство, что это была плохая идея по соображениям совместимости.

Нужно ли иметь оба события, и есть ли способ записать их как для одной и той же функции?

Например («щелчок», «нажмите»)

Ответ Билли невероятно завершен и на самом деле неплохо работал несколько раз, когда я его использовал. Кроме того, однако, вы можете посмотреть плагин vmouse в JQuery Mobile , это попытка отделить события мыши:

// This plugin is an experiment for abstracting away the touch and mouse // events so that developers don't have to worry about which method of input // the device their document is loaded on supports. 

https://github.com/jquery/jquery-mobile/blob/master/js/vmouse.js

Я играю с ним в проекте, над которым я работаю, в наши дни он выглядит очень отзывчивым. Чтобы использовать что-то вроде:

 $('selector').bind('vclick', function () { ... 

или

 $('selector').bind('vmousedown', function () { ... 

Вы можете связать несколько событий в один вызов следующим образом:

 $('selector').bind('click tap',function(){ ... }) 

Это может быть хорошо в некоторых браузерах / мобильных телефонах, однако это может привести к тому, что события будут срабатывать дважды на некоторых устройствах, которые запускают как краны, так и щелчки.

Вы можете исправить это, выполнив какое-то обнаружение устройства / функции и добавив соответствующий обработчик только так …

 $('selector').bind( myCustomDetectionFunction() ? 'click' : 'tap' ,function(){ ... }) 

Кроме того, я думаю, что touchstart и mousedown – лучшие события на выбор. Это связано с тем, что после нажатия событие клика не срабатывает до тех пор, пока не пройдет просрочка, так как система дает возможность второму касанию сделать двойной клик или для того, чтобы он стал жестом салфетки и так далее. Событие touchstart срабатывает немедленно, так как mousedown так должно быть более отзывчивым.

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

https://github.com/cargomedia/jquery.touchToClick

Кажется, что jQuery mobile уже имеет событие, которое делает именно это:

 $(function(){ $('selector').bind('vclick', function(e){ alert('test'); return false; }); }); 

Вы можете использовать плагин vmouse из jQuery. Это позволит устранить задержку в 300 мс при событиях кликов (только для мобильных устройств), а также в случаях, когда срабатывают события щелчка и касания.

Чтобы получить только плагин vmouse, используйте jQuery Mobile Download Builder . Включите его после jQuery, но перед любыми сценариями, которые будут зависеть от этого плагина.

Соответствующим событием является vclick , базовое использование:

 $(".selector").on( "vclick", function( event ) { // To execute }); 
  • Как получить выражение селектора jQuery в виде текста?
  • Подстановочные знаки в селекторах jQuery
  • jQuery .bind () vs. .on ()
  • jQuery выбрать по classу VS выбрать по атрибуту
  • Тестирование, если флажок установлен с помощью jQuery
  • Выбор индекса jQuery
  • jQuery: выбрать class элемента и идентификатор одновременно?
  • Как получить доступ к свойствам стиля псевдоэлементов с помощью jQuery?
  • Как определить, работает ли браузер Chrome с помощью jQuery?
  • jQuery получить все div, которые не имеют атрибута classа
  • Каков самый быстрый способ выбора элементов-потомков в jQuery?
  • Interesting Posts

    Пример взаимодействия с HandlerThread

    Как я могу попросить Selenium-WebDriver ждать несколько секунд в Java?

    Spring 3.0 делает ответ JSON с помощью конвертера сообщений Jackson

    Как сообщить Firefox только сохранить постоянные файлы cookie с сайтов, которые я хочу?

    Как включить модуль из другого файла из того же проекта?

    Почему эти конструкции используют предопределенное поведение до и после инкремента?

    Как вы соединяете часть файла avi с кодировкой xvid с помощью ffmpeg? (Никаких проблем с другими файлами)

    Почему мой преобразуемый атрибут Core Data не использует мой собственный NSValueTransformer?

    Порядок инициализации статических полей в статическом classе

    Как показать SQL-запросы в консоли Rails?

    Как объявить глобальные переменные в Android?

    Как исключить свойство из Json Serialization

    Сбой разрешения перегрузки при streamовом объекте через неявное преобразование в строку

    Android: как рисовать маршруты маршрутов Google Maps API V2 от текущего местоположения до пункта назначения

    Передайте модель controllerу с помощью JQuery / Ajax

    Давайте будем гением компьютера.