Estoy tratando de obtener la posición X con jQuery de un evento touchstart, 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 el alpha jQuery Mobile) lo obtengo con un evento táctil?
¿Algunas ideas?
Gracias por cualquier ayuda.
Respuestas:
Un poco tarde, pero necesitas acceder al evento original, no al jQuery masajeado. Además, dado que se trata de eventos multitáctiles, es necesario realizar otros cambios:
Si desea otros dedos, puede encontrarlos en otros índices de la lista de toques.
ACTUALIZACIÓN PARA JQUERY MÁS RECIENTE:
fuente
touchmove
.e.preventDefault()
en eltouchstart
controlador de eventos.e.touches[0].pageX;
funcionó para míUtilizo esta función simple para un proyecto basado en JQuery
ejemplo:
espero que esto te sea útil;)
fuente
out.x = e.pageX || e.originalEvent.touches[0].pageX;
if(e.type == 'touchstart' || e.type == 'touchmove' || e.type == 'touchend' || e.type == 'touchcancel'){
->if (e.type.startsWith("touch"))
?Probé algunas de las otras respuestas aquí, pero originalEvent también estaba indefinido. Tras la inspección, encontré una propiedad clasificada TouchList (como lo sugirió otro cartel) y logré llegar a pageX / Y de esta manera:
fuente
Si no está usando jQuery ... necesita acceder a uno de los eventos
TouchList
para obtener unTouch
objeto que tengapageX/Y
clientX/Y
etc.Aquí hay enlaces a los documentos relevantes:
Estoy usando
e.targetTouches[0].pageX
en mi caso.fuente
Consulte la referencia del desarrollador de Safari en la clase Touch .
De acuerdo con esto, pageX / Y debería estar disponible. ¿Quizás debería revisar la ortografía? asegúrese de que sea
pageX
y noPageX
fuente