свойства события touchend - PullRequest
       18

свойства события touchend

48 голосов
/ 25 августа 2011

Если я отлавливаю все события касания с мобильных устройств с помощью:

$(document.body).bind('touchend', function (e) {
var touch = e.touches[0]; // doesnt work
...

Мне нужно получить touch.screenX, touch.screenY, touch.clientX и touch.clientX из параметра e.Все примеры, которые я видел, предполагают, что e.touches будет коллекцией, и вы можете получить подробную информацию с помощью e.touches[0].В моих тестах на ipad e.touches всегда неопределен.Я не использую никакие плагины jquery.

Также пробовал e.targetTouches, который также не определен.

Кто-нибудь может помочь?

Ответы [ 2 ]

98 голосов
/ 10 апреля 2012

На самом деле, выпущенные штрихи будут найдены в массиве changeTouches, то есть:

e.changedTouches[0].pageX // get the end x page coordinate for a released touch

Я думаю, что это немного надежнее, чем использование свойства originalEvent.

Подробнее об изменениях можно прочитать здесь: http://www.w3.org/TR/touch-events/#changedtouches-of-a-touchevent

10 голосов
/ 01 ноября 2011

Свойство touch является объектом TouchList.Вы можете увидеть ссылку на класс TouchList здесь .

Если вы проконтролируете его свойство length с этим примером кода на #log div:

$('#element').bind('touchstart', function(event) 
{
    $('#log').append(event.originalEvent.touches.length+'<br/>');
});

$('#element').bind('touchmove', function(event) 
{
    $('#log').append(event.originalEvent.touches.length+'<br/>');
});

$('#element').bind('touchend', function(event) 
{
    $('#log').append(event.originalEvent.touches.length+'<br/>');
});

, вы получите 1, авыполнение touchstart и touchmove, 0 при выполнении touchend.Вот почему вы получаете неопределенное от e.touches[0].

...