используя ontouchend, отключите onclick - PullRequest
0 голосов
/ 10 февраля 2012

Я создаю веб-приложение для мобильных устройств и использую ontouchend для большинства, но не для всех "кликов". Проблема в том, что я хотел бы отключить событие onclick в моих функциях ontouchend. Есть идеи? Спасибо

Ответы [ 2 ]

4 голосов
/ 24 марта 2013

Для мобильных устройств событие нажатия переключается с событием касания. С помощью JQuery вы можете добавить несколько событий, используя .on (), но если вы добавите как касание, так и щелчок, оба события сработают, что приведет к нескольким триггерам. Лучше использовать переключатель, как показано ниже:

var eventType = (/Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone/i.test(navigator.userAgent) ) ? 'touchend' : 'click';

$('#item').on(eventType, function(e) {
    //do something
});

Или я также использую это как общий переключатель для сенсорных устройств:

var isTouchDevice = (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);
var eventType = (isTouchDevice) ? 'touchend' : 'click';
2 голосов
/ 10 февраля 2012

Это общее предположение, но я предполагаю, что вам нужно будет создать обработчик событий для каждого события щелчка, которое вы хотите игнорировать, а затем просто иметь функцию e.preventDefault (), где e - объект события.

Это будет запускать оба события одновременно, однако событие click просто ничего не сделает, и у вас останется только код из события ontouchend.

Вполне возможно, есть лучший способ сделать это, как я уже сказал, только предположение!

Надеюсь, это поможет: -)

Andrew

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...