свойства 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]
.