определенные сенсорные события вызывают несколько событий, как я могу ограничить желаемое событие? - PullRequest
0 голосов
/ 01 июля 2011

Так что, если я коснусь или коснусь, он будет работать как положено, но если я проведу пальцем, я получу два события. Размах и размах, но я также получаю событие касания. Есть ли способ удалить событие касания, если происходит смахивание или смахивание?

Live Пример:

HTML:

<div data-role="page" id="home"> 
    <div data-role="content">
        <div id="display-event" class="add-border">
            <p>Tap, TapHold (for 1 second), Swipe, SwipeRight or SwipeLeft</p>
        </div>
    </div>
</div>

JS:

function bindEvent(element) {
    element.bind('tap taphold swipe swiperight swipeleft', function(event, ui) {
       alert('Event: '+event.type); 
    });
}

bindEvent($('#display-event'));

Связанный вопрос: Событие «Размах» вызывает событие касания для ipod touch

Обновление: - http://jsfiddle.net/hJtAQ/31/ (по методу Ясперса)

1 Ответ

2 голосов
/ 21 октября 2011

Если вы хотите проверить только первое событие, которое запускается, вы можете установить таймаут и preventDefault() для остальных событий:

function bindEvent(element) {
    element.bind('tap taphold swipe swiperight swipeleft', function(event, ui) {
       if (event_ok == false) {
           event.preventDefault();
           return false;
       } else {
           event_ok = false;
           setTimeout(function () {
               event_ok = true;
           }, 500);
           alert('Event: '+event.type);
       }
    });
}

var event_ok = true;
bindEvent($('#display-event'));
...