问题描述:一个元素上同时绑定了点击事件与长按事件时,当长按事件触发时,点击事件也会被触发
解决办法:记录手指点下与手指抬起之间的时间差 在触发tap事件前 判断时间差 小于350 就触发tap 否则不处理
代码:
<button
bindtouchstart="handleTouchStart"
bindtouchend="handleTouchEnd"
bindlongpress="handleLongPress"
bindtap="handleClick">
// 手指按下
handleTouchStart: function(e) {
this.startTime = e.timeStamp;
},
//手指离开
handleTouchEnd: function(e) {
this.endTime = e.timeStamp;
},
// 点击事件
handleClick: function(e) {
if (this.endTime - this.startTime < 350) {
console.log("点击");
}
},
// 长按事件
handleLongPress: function(e) {
console.log("长按");
}