Свойства события 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.
Может ли кто-нибудь помочь?
Ответы
Ответ 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]
.