2012-02-20 21 views
9

Cuando un visitante hace clic en en una imagen, se activará el evento click. Sin embargo, cuando alguien toca la imagen, se activará el mismo evento click, incluso si un evento touchstart está disponible también.¿Hay alguna manera de que un evento de inicio táctil no active el evento click?

Me gusta un comportamiento diferente para un evento real de clic (mouse) y un evento táctil. Lo extraño es que incluso un evento mouseup se activa cuando se usa en un teléfono inteligente. ¿Hay alguna forma de separar el mouse de los eventos táctiles?

Respuesta

9
event.preventDefault(); 

resolvieron el problema, espero que esto ayuda a la gente!

+0

Esto no funcionará si solo está agregando 'event.preventDefault()' a la devolución de llamada 'touchstart'. Al menos no en enlaces en iOS 8.4 Safari. Tendría que agregarlo al controlador de eventos 'click'. –

1

puede normalizar un evento ..

Véase mi respuesta a esta pregunta:

Click event called twice on touchend in iPad

También puede buscar en el código fuente móvil jQuery para encontrar la inspiración: http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.js de inicio en la línea 982

/* 
* "events" plugin - Handles events 
*/ 

(function($, window, undefined) { 

// add new event shortcuts 
$.each(("touchstart touchmove touchend orientationchange throttledresize " + 
        "tap taphold swipe swipeleft swiperight scrollstart scrollstop").split(" "), function(i, name) { 

    $.fn[ name ] = function(fn) { 
     return fn ? this.bind(name, fn) : this.trigger(name); 
    }; 

    $.attrFn[ name ] = true; 
}); 
.... 

Mire el caso del grifo: (línea 1049)

$.event.special.tap = { 
+0

Gracias por la respuesta completa. Lo único es que ahora se dirige específicamente a dispositivos especiales, en este caso el iPhone. Prefiero que todos los dispositivos que admiten touchstart traten el clic y toquen diferente. Desearía que hubiese una var simple que pudieras configurar para deshabilitar. – Mark

Cuestiones relacionadas