Javascript jQuery移动刷卡事件也会产生点击:如何忽略产生的点击事件?

Javascript jQuery移动刷卡事件也会产生点击:如何忽略产生的点击事件?,javascript,jquery,html,jquery-mobile,jquery-events,Javascript,Jquery,Html,Jquery Mobile,Jquery Events,我们需要为DIV绑定swipe和tap事件。但是,jQuery Mobile(1.3)中的swipe事件也会生成tap事件。我们需要阻止滑动传播到tap处理程序,但是preventDefault不起作用。换句话说,我们希望滑动只触发滑动处理程序,而不触发点击处理程序 正确的方法是什么?您可以对只想监听滑动事件的元素使用解除绑定功能 $(ele).unbind("tap taphold"); 滑动总是在点击之前发生,因此请尝试以下操作: var swipped; $(element).o

我们需要为DIV绑定
swipe
tap
事件。但是,jQuery Mobile(1.3)中的
swipe
事件也会生成
tap
事件。我们需要阻止滑动传播到tap处理程序,但是
preventDefault
不起作用。换句话说,我们希望滑动只触发滑动处理程序,而不触发点击处理程序


正确的方法是什么?

您可以对只想监听
滑动
事件的元素使用
解除绑定
功能

$(ele).unbind("tap taphold");

滑动
总是在
点击
之前发生,因此请尝试以下操作:

var swipped;    
$(element).on('swipe tap',function(evt){
    if(evt.type=='swipe') {
        swipped = true;
        if(evt.swipestart.coords[0]>evt.swipestop.coords[0]){
            console.log('swipe left to right')
        } else {
            console.log('swipe right to left')
        }
    } else {
        if(swipped){ // ignore this tap
            swipped=false;
        } else {
            console.log('tap');
        }
    }
});

不幸的是,我们需要为同一个元素绑定两个事件。在这种情况下,我认为您应该在1秒后延迟执行tap回调。如果在这1秒内发生了刷卡,那么回调将被丢弃,否则它将被触发。感谢这是三年前的事。。。但是你能给我们演示一下你的意思吗?你甚至可能因为回答这个问题而得到分数:)