jQuery mobile – для каждого события прямого трансляционного события должно существовать эквивалентное событие click?
Я заменил события jQuery live click на jQuery для мобильных событий, чтобы повысить отзывчивость.
У меня такое чувство, что это была плохая идея по соображениям совместимости.
Нужно ли иметь оба события, и есть ли способ записать их как для одной и той же функции?
- jQuery выбирает атрибут с использованием операторов AND и OR
- Разница между CSS-селектором и фильтром jQuery?
- Эффективный, лаконичный способ найти следующий соответствующий друг?
- Как я могу выбрать элемент с несколькими classами в jQuery?
- Тестирование, если флажок установлен с помощью jQuery
Например («щелчок», «нажмите»)
- Каков самый быстрый способ выбора элементов-потомков в jQuery?
- Как я могу получить идентификатор элемента с помощью jQuery?
- Что такое fastest children () или find () в jQuery?
- Подстановочные знаки в селекторах jQuery
- Есть ли jQuery-подобный CSS / HTML-селектор, который можно использовать в C #?
- Получить список отмеченных флажков в div с помощью jQuery
- Более чистый способ выбора нескольких возможных значений атрибутов?
- jQuery .bind () vs. .on ()
Ответ Билли невероятно завершен и на самом деле неплохо работал несколько раз, когда я его использовал. Кроме того, однако, вы можете посмотреть плагин 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
так должно быть более отзывчивым.
Мы разработали небольшой скрипт для решения этой проблемы. Просто включите его на глобальном уровне, и ваши события кликов будут немедленно запущены без каких-либо проблем с задержкой.
Кажется, что 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 });