2013-03-14 24 views
8

Tôi muốn ngăn chặn một neo nhấp chuột thông qua nếu nó được khai thác với một thiết bị cảm ứng, nhưng để hoạt động bình thường nếu được nhấp vào bằng một con chuột.Làm thế nào để ngăn chặn mặc định liên lạc với hammer.js

Lý do, trên máy tính để bàn, bạn di chuột qua neo để xem thêm thông tin, sau đó nhấp để xem sản phẩm.

Trên thiết bị di động, tôi muốn nhấn lần đầu tiên để hiển thị thông tin, thứ hai để xem sản phẩm.

Tôi đã cố gắng không có kết thúc của các biến thể trong các cách sau:

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

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

     return false; 
    } 

}); 

Có ai có bất kỳ suy nghĩ về điều này? Cảm ơn!

+0

Ông có thể làm cho một jsfiddle nhỏ? – qwerty

+0

'pointerType' có được nhận dạng chính xác khi bạn đang sử dụng điện thoại thông minh không? – Bigood

+0

Tôi không nghĩ rằng cách tiếp cận này sẽ làm việc, tôi không thể làm cho nó hoạt động. Xem này: http://jsfiddle.net/FUZwZ/2/ Nếu tôi nhấp vào nó trong Chrome trên PC, nó cung cấp cho tôi hai lời nhắc, một cho nhấp chuột và sau đó một lần nhấn. Nếu tôi chạm vào cùng một liên kết trên Galaxy Nexus của tôi (với Chrome), nó chỉ đăng ký nhấp chuột. Tôi đặt cược nó khác nhau giữa các trình duyệt, vì vậy tôi không nghĩ rằng điều này cho đến khi làm việc. – qwerty

Trả lời

0

jQuery mouseover hoạt động trên thiết bị di động (ít nhất, trong iOS). Tôi tạo ra một fiddle sử dụng mouseover, cùng với nói sự liên kết không sa thải mà không có một opacity của 1.

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

Tôi đã thử nghiệm này trong chrome và trên iPhone 4S, và có vẻ như để làm những gì bạn yêu cầu . Hãy cho tôi biết nếu nó hoạt động trên mối quan hệ của bạn.

Các JS:

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