当访客在图像上点击时,将触发click
事件。但是,当有人触摸图像时,即使同样有touchstart
事件可用,也会触发相同的click
事件。触摸开始事件是否会触发点击事件?
我对于实际的点击(鼠标)事件和触摸事件喜欢不同的行为。奇怪的是,即使是在智能手机上使用时也会触发一个mouseup
事件。无论如何,您可以将鼠标与触摸事件分开吗?
当访客在图像上点击时,将触发click
事件。但是,当有人触摸图像时,即使同样有touchstart
事件可用,也会触发相同的click
事件。触摸开始事件是否会触发点击事件?
我对于实际的点击(鼠标)事件和触摸事件喜欢不同的行为。奇怪的是,即使是在智能手机上使用时也会触发一个mouseup
事件。无论如何,您可以将鼠标与触摸事件分开吗?
event.preventDefault();
的伎俩,希望这可以帮助的人!
可以归事件..
见我回答这个问题:
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 = {
谢谢你的彻底答案。唯一的问题是,现在你在这种情况下专门针对“特殊设备”iPhone。我宁愿所有支持touchstart的设备都将点击和触摸开始视为不同。我希望有一个简单的变种你可以设置禁用。 – Mark 2012-02-20 13:55:03
这是一种防止touchstart点击后的复杂方式。 touchstart后传播的点击称为鬼点击。
谷歌已经实施了一个解决方案。在这里你去..
http://code.google.com/mobile/articles/fast_buttons.html#ghost
如果您只是将'event.preventDefault()'添加到'touchstart'回调函数,这将不起作用。至少在iOS 8.4 Safari的链接上。您必须将其添加到'click'事件处理程序。 – 2015-07-09 21:57:14