使用ontouchend,禁用onclick

时间:2012-02-10 00:05:24

标签: javascript jquery mobile cordova

我正在为移动设备创建一个网络应用程序,我正在使用ontouchend进行大多数但不是所有的“点击” 问题是我想在ontouchend函数上禁用onclick事件。有任何想法吗? 感谢

2 个答案:

答案 0 :(得分:4)

对于移动设备,使用touchend事件切换点击事件。使用JQuery,您可以使用.on()添加多个事件,但是如果同时添加触摸和单击事件,则两个事件都会触发,从而导致多个触发器。最好使用如下所示的开关:

var eventType = (/Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone/i.test(navigator.userAgent) ) ? 'touchend' : 'click';

$('#item').on(eventType, function(e) {
    //do something
});

或者我也将它用作触摸设备的通用开关:

var isTouchDevice = (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);
var eventType = (isTouchDevice) ? 'touchend' : 'click';

答案 1 :(得分:2)

这是一个完全猜测,但我认为你需要为你想忽略的每个click事件创建一个事件处理程序,然后在函数中只有e.preventDefault(),其中e是事件对象。

然后,这将同时运行两个事件,但是click事件只会做什么,而你只剩下来自ontouchend事件的代码。

很可能有更好的方法来做到这一点,就像我说的那样,只是猜测!

希望它有所帮助: - )

安德鲁