2013-03-14 5 views
8

Vorrei impedire che un'ancora possa fare clic se viene toccata con un dispositivo touch, ma per funzionare normalmente se si fa clic con il mouse.Come prevenire il default sul touch con hammer.js

Il motivo è che, sul desktop, si passa con il mouse sull'ancora per visualizzare ulteriori informazioni, quindi fare clic per visualizzare il prodotto.

Su un cellulare, voglio il primo tocco per mostrare le informazioni, in secondo luogo per visualizzare il prodotto.

ho provato a non finire variazioni delle seguenti operazioni:

$('article.product aside a.link').hammer().on('tap', function(ev) { 

    if (ev.gesture.pointerType == 'touch') { 
     ev.gesture.srcEvent.preventDefault(); 

     return false; 
    } 

}); 

Qualcuno ha qualche idea su questo? Grazie!

+0

Potresti fare un piccolo jsfiddle? – qwerty

+0

Il 'pointerType' è riconosciuto correttamente quando sei su uno smartphone? – Bigood

+0

Non penso che questo approccio funzionerà, non posso farlo funzionare neanche. Vedi questo: http://jsfiddle.net/FUZwZ/2/ Se lo clicco su Chrome su PC, mi danno due prompt, uno per click e uno per tap. Se tocco lo stesso link sul mio Galaxy Nexus (con Chrome) registra semplicemente il clic. Scommetto che varia tra i browser, quindi non penso che questo funzionerà. – qwerty

risposta

0

jQuery mouseover funziona su dispositivi mobili (almeno in iOS). Ho creato un violino che utilizza mouseover, insieme a raccontare il link di non sparare senza una opacity di 1.

http://jsfiddle.net/FyF3b/5/

Ho provato questo in cromo e su un iPhone 4S, e sembra di fare ciò che avete richiesto . Fammi sapere se funziona sul tuo nesso.

Le JS:

$('aside').on('mouseover mouseout', function() { 
    $(this).toggleClass('on'); 
}); 
$('aside a').on('click', function(event) { 
    if ($(this).parent().css('opacity') < 1) { 
    event.preventDefault(); 
    } 
}); 
Problemi correlati