как прослушать два события и запустить только одну функцию в мобильном телефоне jquery? - PullRequest
1 голос
/ 02 февраля 2012

У меня есть это:

$('li.clickable').live('click tap', function() {
   console.log("hello");
   )};

Если я так слушаю и нажимаю на элемент списка, запускаются два события = я получаю два "привета". Мне нужно запускать функцию с каждым нажатием кнопки, но только один раз!

Есть ли способ сделать это. Я не могу использовать «один», потому что после первого щелчка функция отключится, не так ли?

Спасибо за указатель!

EDIT :
если я опускаю щелчок или касание, функция по-прежнему срабатывает дважды. Есть ли способ предотвратить это?

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

jQM Документы:

События виртуальной мыши
Мы предоставляем набор "виртуальных" событий мыши, которые пытаются абстрагировать события мыши и касания. это позволяет разработчику регистрировать слушателей для основных событий мыши, такие как mousedown, mousemove, mouseup и click, и плагин будет позаботиться о регистрации правильных слушателей за кулисами вызвать слушателя в самое быстрое время для этого устройства. В сенсорных сред, плагин сохраняет порядок запуска событий, который видна в традиционных средах мыши, например, vmouseup всегда отправляется до vmousedown и vmousedown до vclick, и т.д. События виртуальной мыши также нормализуют, как координаты информация извлекается из события, поэтому в контакте на основе окружения, координаты доступны на странице X, странице Y, Свойства screenX, screenY, clientX и clientY, прямо на объект события.

vclick

Нормализованное событие для обработки событий касания или щелчка мышью. На сенсорных устройствах это событие отправляется ПОСЛЕ vmouseup.

Попробуйте использовать:

$('li.clickable').live('vclick', function() {
   console.log("hello");
)};

Также вы можете проверить, какое событие запускается

$('li.clickable').live('click tap', function(e) {
    console.log("Which Event: "+e.which + " Event Type: "+e.type);
)};
0 голосов
/ 02 февраля 2012

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

У нас были всевозможные проблемы, когда емкостный сенсорный экран стал широко распространенным и люди (например,в перчатках) будет запускаться дважды.То, что помогает против двойного касания пользователя, может помочь против двойного касания системы:

//global scope:
var triggertimeouts={}

и

$('li.clickable').live('click tap', function() {
   if (!triggertimeouts.myclicktap) {
      triggertimeouts.myclicktap=window.setTimeout('triggertimeouts.myclicktap=false;',250);
      console.log("hello");
   }
   )};
...