jQuery Mobile滑动事件也会产生点击:如何忽略产生的点击事件?

时间:2013-12-11 02:32:47

标签: javascript jquery html jquery-mobile javascript-events

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

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

swipe始终在tap之前发生,请尝试以下操作:

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 :(得分:0)

您可以对要收听unbind事件的元素使用swipe函数。

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