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

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

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

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

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

кто может помочь?

2 ответов


фактически, выпущенные штрихи будут найдены в массиве changedTouches, т. е.:

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

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

вы можете прочитать больше о changedTouches здесь: http://www.w3.org/TR/touch-events/#changedtouches-of-a-touchevent


свойство touches является объектом 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. Вот почему вы получаете undefined от e.touches[0].