Расширение .on () в jQuery для работы с сенсорными событиями на мобильных устройствах - PullRequest
9 голосов
/ 16 февраля 2012

Я пытаюсь использовать мобильные события jQuery без остальной части мобильного jQuery.

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

Этот фрагмент включает их все и работает нормально, но не с обработчиком событий .on (). Например:

$('a').on('tap',function(){
    console.log('Hi there!');
});

Однако он работает с .live (), но теперь это устарело.

Итак, мой вопрос; Есть ли способ расширить функциональность .on (), чтобы включить событие tap и другие? Полный список ниже:

  • touchstart
  • TouchMove
  • touchend
  • orientationchange
  • нажмите
  • taphold
  • салфетки
  • swipeleft
  • swiperight
  • scrollstart
  • scrollstop

Спасибо:)

Ответы [ 2 ]

9 голосов
/ 16 февраля 2012

Тем не менее, он работает с .live (), но теперь это устарело.

Поэтому я предполагаю, что вы хотите использовать делегирование событий для сохранения этих событий на замененных элементах.Это означало бы, что это:

$('a').on('tap',function () {
    console.log('Hi there!');
});

нужно будет изменить на что-то вроде:

$(document).on('tap', 'a', function () {
    console.log('Hi there!');
});

, чтобы он вел себя так же, как $("a").live("tap", ...

0 голосов
/ 17 июля 2013

Может быть, лучше расширить код события JQuery для мобильных и настольных компьютеров.

Один из способов сделать это - использовать плагин JQuery vmouse (виртуальная мышь).

Из vmouseКомментарии плагина:

// Этот плагин является экспериментом для абстрагирования событий касания и мыши
//, чтобы разработчикам не приходилось беспокоиться о том, какой метод ввода
// устройство, на которое загружен их документ, поддерживает
//
// Идея состоит в том, чтобы позволить разработчику регистрировать прослушиватели для
// основных событий мыши, таких как mousedown, mousemove, mouseup,и нажмите
// и плагин позаботится о том, чтобы зарегистрировать правильных слушателей
// за кулисами, чтобы вызвать слушателя в самое быстрое время
// для этого устройства, сохраняя при этом порядокзапуска события в
// традиционной мышиной среде, если несколько обработчиков будут зарегистрированы
// в одном и том же элементе для разных событий.
//
//текущая версия предоставляет следующие виртуальные события методам связывания jQuery:
// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel"

Более подробное объяснение см. https://coderwall.com/p/bdxjzg

Плагин vmouse: https://github.com/jquery/jquery-mobile/blob/master/js/jquery.mobile.vmouse.js

Также смотрите эту ссылку о текущем состоянии событий (touch): http://blogs.adobe.com/adobeandjquery/2011/03/07/the-current-state-of-touch-events/

...