Pregunta

Estoy vinculando eventos en vivo en enlaces en mi brecha telefónica aplicación.El evento se activa con éxito (confirmado por alert()ing), pero parece que los datos táctiles no están adjuntos al objeto del evento como debería estar.Esto sucede en todos los eventos táctiles. touchstart, touchmove, y touchend.

$('a').live('touchend', function(event) {
  event.preventDefault();
  alert(event.touches.length); // event.touches should be populated!
});

¿Algunas ideas?¿Soy SOL con jQuery.live()?

¿Fue útil?

Solución

Los eventos táctiles no son compatibles actualmente por Eventos / vivo.

A partir de la documentación:

  

Los valores posibles de eventos: haga clic en,   dblclick, mousedown, mouseup,   mousemove, al pasar el ratón, mouseout,   keydown, pulsación de tecla, keyup

     

En la actualidad no es compatible: mancha, foco,   MouseEnter, mouseleave, cambio, presentar

Es posible que desee considerar tratando de utilizar haga clic en si que se adapte a sus necesidades, o puede pasar a utilizar livequery, lo que probablemente va a apoyar. (Livequery es lo vivo se basó originalmente en, no estoy seguro de por qué no es compatible con todos los mismos eventos)

Otros consejos

En realidad, puedes utilizar el método .live.No tienes la propiedad event.touches debido a cómo jQuery maneja los eventos internamente.Para "arreglar" eventos, jQuery clona el evento.Al hacerlo, sólo copia un número limitado de propiedades por motivos de rendimiento.Sin embargo, aún puede acceder al objeto de evento original a través de la propiedad event.originalEvent.

Entonces su código de ejemplo debería verse como el siguiente:

$('a').live('touchend', function(event) {
  event.preventDefault();
  console.log(event.originalEvent.touches.length);
});

Estas son las propiedades que se copian: http://github.com/jquery/jquery/blob/master/src/event.js#L411

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top