Saltar al contenido

Evitar el clic fantasma al vincular ‘touchstart’ y ‘click’

Hola usuario de nuestra página web, encontramos la solución a tu pregunta, deslízate y la verás aquí.

Solución:

Si desea hacer cosas específicas para diferentes tipos de eventos, use e.type

$('.button').on('touchstart click', function(e)     
    e.preventDefault(); //prevent default behavior
    if(e.type == "touchstart") 
        // Handle touchstart event.
     else if(e.type == "click") 
        // Handle click event.
    
);

Touchstart debería ocurrir antes de hacer clic, por lo que elimino el controlador de clics si el evento es de tipo touchstart. Esto parece estar funcionando bien para mis propósitos:

$('.do-popdown').on('click touchstart', handlePopdown);
function handlePopdown(e)
    if(e.type == 'touchstart') 
        $('.do-popdown').off('click', handlePopdown).click(function(e)
            // do nothing
            e.stopPropagation();
            e.preventDefault();
            return false;
        );
    
    // do my handling...
    // and nothing else:
    e.stopPropagation();
    e.preventDefault();
    return false;

los e.stopPropagation(); e.preventDefault(); return false; puede ser excesivo, pero lo uso en una variedad de elementos diferentes (,

, ,