2012-02-20 33 views
9

Khi khách truy cập nhấp chuột trên hình ảnh, sự kiện click sẽ được kích hoạt. Tuy nhiên, khi ai đó chạm vào hình ảnh, cùng một sự kiện click sẽ được kích hoạt, ngay cả khi sự kiện touchstart cũng có sẵn.Có cách nào mà sự kiện bắt đầu chạm sẽ không kích hoạt sự kiện nhấp chuột không?

Tôi thích một hành vi khác cho sự kiện nhấp chuột (chuột) thực tế và sự kiện chạm. Điều kỳ lạ là, ngay cả một sự kiện mouseup được kích hoạt khi được sử dụng trên điện thoại thông minh. Có anyway bạn có thể tách chuột từ các sự kiện liên lạc?

Trả lời

9
event.preventDefault(); 

Bí quyết, hy vọng điều này sẽ giúp mọi người!

+0

Thao tác này sẽ không hoạt động nếu bạn chỉ thêm 'event.preventDefault()' vào lệnh gọi 'touchstart'. Ít nhất không phải trên các liên kết trong iOS 8.4 Safari. Bạn sẽ phải thêm nó vào trình xử lý sự kiện 'click'. –

1

bạn có thể bình thường hóa một sự kiện ..

Xem câu trả lời của tôi cho câu hỏi này:

Click event called twice on touchend in iPad

Bạn cũng có thể tìm trong các mã nguồn di động jQuery để tìm nguồn cảm hứng: http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.js Bắt đầu tại dòng 982

/* 
* "events" plugin - Handles events 
*/ 

(function($, window, undefined) { 

// add new event shortcuts 
$.each(("touchstart touchmove touchend orientationchange throttledresize " + 
        "tap taphold swipe swipeleft swiperight scrollstart scrollstop").split(" "), function(i, name) { 

    $.fn[ name ] = function(fn) { 
     return fn ? this.bind(name, fn) : this.trigger(name); 
    }; 

    $.attrFn[ name ] = true; 
}); 
.... 

Nhìn vào sự kiện nhấn: (dòng 1049)

$.event.special.tap = { 
+0

Cảm ơn bạn đã trả lời kỹ lưỡng. Điều duy nhất là, bây giờ bạn đang nhắm mục tiêu 'thiết bị đặc biệt cụ thể' trong trường hợp này là iPhone. Tôi thà muốn tất cả các thiết bị hỗ trợ cảm ứng để xử lý nhấp chuột và cảm ứng khác nhau. Tôi muốn có một var đơn giản, bạn có thể thiết lập để vô hiệu hóa. – Mark

Các vấn đề liên quan