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 и контекст
  • Найти все элементы на основе ids с помощью regex в селекторе jQuery
  • Как определить, работает ли браузер Chrome с помощью jQuery?
  • Элемент или class LIKE для jQuery?
  • использовать jQuery's find () для объекта JSON
  • jQuery выбрать по classу VS выбрать по атрибуту
  • Как получить доступ к свойствам стиля псевдоэлементов с помощью jQuery?
  • Выберите элемент, когда имя classа начинается с определенного слова
  • Как работают PrimeFaces Selectors как в update = "@ (. MyClass)"?
  • Давайте будем гением компьютера.