2013-03-14 6 views
8

Ich möchte verhindern, dass ein Anker durchklopft, wenn er mit einem Touch-Gerät angetippt wird, aber normal funktioniert, wenn er mit der Maus angeklickt wird.So verhindern Sie den Standard bei Berührung mit hammer.js

Der Grund dafür ist, auf dem Desktop bewegen Sie den Mauszeiger über den Anker, um weitere Informationen zu sehen. Klicken Sie dann, um das Produkt anzuzeigen.

Auf einem Handy möchte ich den ersten Tipp, um Informationen anzuzeigen, zweitens, um das Produkt anzuzeigen.

Ich habe kein Ende der Variationen des folgenden versucht:

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

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

     return false; 
    } 

}); 

auf diese irgendwelche Gedanken jemand tut? Vielen Dank!

+0

Könnten Sie eine kleine jsfiddle machen? – qwerty

+0

Wird der 'pointerType' korrekt erkannt, wenn Sie sich auf einem Smartphone befinden? – Bigood

+0

Ich glaube nicht, dass dieser Ansatz funktioniert, ich kann es auch nicht funktionieren. Sehen Sie dies: http://jsfiddle.net/FUZwZ/2/ Wenn ich es in Chrome auf dem PC klicke, erhalte ich zwei Aufforderungen, eine für den Klick und eine für den Tipp. Wenn ich auf den gleichen Link auf meinem Galaxy Nexus (mit Chrome) tippe, wird nur der Klick registriert. Ich wette, es variiert zwischen den Browsern, also denke ich nicht, bis es funktioniert. – qwerty

Antwort

0

jQuery mouseover funktioniert auf mobilen Geräten (zumindest in iOS). Ich habe eine Geige, die ohne eine opacity von 1.

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

Getestet habe ich diese in Chrom und auf einem iPhone 4S mouseover, zusammen mit sage die Verbindung nicht zu schießen benutzt, und es scheint zu tun, was Ihnen angeforderte . Lass es mich wissen, wenn es auf deinem Nexus funktioniert.

Die JS:

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