Estoy tratando de obtener la posición X con jQuery de un evento de inicio táctil, ¿usado con la función en vivo?
Es decir
$('#box').live('touchstart', function(e) { var xPos = e.PageX; } );Ahora, esto funciona con 'clic' como evento. ¿Cómo diablos (sin usar alpha jQuery Mobile) lo obtengo con un evento táctil?
¿Algunas ideas?
Gracias por cualquier ayuda.
Un poco tarde, pero necesita acceder al evento original, no al masajeado por jQuery. Además, dado que estos son eventos multitáctiles, es necesario realizar otros cambios:
$('#box').live('touchstart', function(e) { var xPos = e.originalEvent.touches[0].pageX; });Si quieres otros dedos, puedes encontrarlos en otros índices de la lista de toques.
ACTUALIZACIÓN PARA JQUERY MÁS NUEVO:
$(document).on('touchstart', '#box', function(e) { var xPos = e.originalEvent.touches[0].pageX; });Uso esta función simple para proyectos basados en JQuery
var pointerEventToXY = function(e){ var out = {x:0, y:0}; if(e.type == 'touchstart' || e.type == 'touchmove' || e.type == 'touchend' || e.type == 'touchcancel'){ var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; out.x = touch.pageX; out.y = touch.pageY; } else if (e.type == 'mousedown' || e.type == 'mouseup' || e.type == 'mousemove' || e.type == 'mouseover'|| e.type=='mouseout' || e.type=='mouseenter' || e.type=='mouseleave') { out.x = e.pageX; out.y = e.pageY; } return out; };ejemplo:
$('a').on('mousedown touchstart', function(e){ console.log(pointerEventToXY(e)); // will return obj ..kind of {x:20,y:40} })Espero que esto te sea útil ;)
Probé algunas de las otras respuestas aquí, pero originalEvent tampoco estaba definido. Tras la inspección, encontré una propiedad clasificada TouchList (como lo sugirió otro cartel) y logré llegar a la página X/Y de esta manera:
var x = e.changedTouches[0].pageX;