2012-02-20 171 views
9

当访客在图像上点击时,将触发click事件。但是,当有人触摸图像时,即使同样有touchstart事件可用,也会触发相同的click事件。触摸开始事件是否会触发点击事件?

我对于实际的点击(鼠标)事件和触摸事件喜欢不同的行为。奇怪的是,即使是在智能手机上使用时也会触发一个mouseup事件。无论如何,您可以将鼠标与触摸事件分开吗?

回答

9
event.preventDefault(); 

的伎俩,希望这可以帮助的人!

+0

如果您只是将'event.preventDefault()'添加到'touchstart'回调函数,这将不起作用。至少在iOS 8.4 Safari的链接上。您必须将其添加到'click'事件处理程序。 – 2015-07-09 21:57:14

1

可以归事件..

见我回答这个问题:

Click event called twice on touchend in iPad

您还可以在jQuery Mobile的源代码中找到灵感:http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.js开始于行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; 
}); 
.... 

看的轻敲事件:(线1049)

$.event.special.tap = { 
+0

谢谢你的彻底答案。唯一的问题是,现在你在这种情况下专门针对“特殊设备”iPhone。我宁愿所有支持touchstart的设备都将点击和触摸开始视为不同。我希望有一个简单的变种你可以设置禁用。 – Mark 2012-02-20 13:55:03