2013-03-14 7 views
8

Chciałbym uniemożliwić klikanie kotwicy, jeśli jest ona dotknięta za pomocą urządzenia dotykowego, ale działa normalnie po kliknięciu myszą.Jak zapobiec domyślnemu dotknięciu przy użyciu pliku hammer.js

Powód: na pulpicie przesuwasz kursor nad kotwicą, aby wyświetlić więcej informacji, a następnie kliknij, aby wyświetlić produkt.

Na telefonie komórkowym chcę pierwszego dotknięcia, aby wyświetlić informacje, a następnie wyświetlić produkt.

Próbowałem bez końca wariacji z następujących powodów:

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

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

     return false; 
    } 

}); 

Czy ktoś ma jakieś przemyślenia na ten temat? Dzięki!

+0

można zrobić małą jsfiddle? – qwerty

+0

Czy "pointerType" jest rozpoznawany poprawnie, gdy jesteś na smartfonie? – Bigood

+0

Nie sądzę, że to podejście zadziała, nie będę mógł go również uruchomić. Zobacz: http://jsfiddle.net/FUZwZ/2/ Po kliknięciu w Chrome na PC dostaję dwa monity, jeden dla kliknięcia, a drugi dla stuknięcia. Jeśli dotknę tego samego linku na moim Galaxy Nexusie (z Chrome), zarejestruje on kliknięcie. Założę się, że różni się między przeglądarkami, więc nie myślę o tym aż do pracy. – qwerty

Odpowiedz

0

jQuery mouseover działa na urządzeniach mobilnych (przynajmniej w iOS). I stworzył skrzypce który używa mouseover, wraz z informacją link nie strzelać bez opacity od 1.

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

Testowałem to w chromie i na iPhone 4S, i wydaje się, aby robić to, co wymagane . Daj mi znać, jeśli działa na Twoim węźle.

JS:

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