Подтвердить что ты не робот

Свойства события touchhend

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

$(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 всегда undefined. Я не использую плагины jquery.

Также попробовал e.targetTouches, который также является undefined.

Может ли кто-нибудь помочь?

4b9b3361

Ответ 1

Фактически, выпущенные касания будут найдены в массиве changedTouches, то есть:

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

Ответ 2

Свойство 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 при выполнении touchhend. Вот почему вы получаете undefined от e.touches[0].