点击事件仅在手指不滑动时才有效

时间:2013-03-16 17:00:17

标签: jquery cordova jquery-mobile

我在IOS上使用带有手机间隙的jquery手机,我注意到只有当您点按屏幕而不向左或向右移动手指时才会触发点击事件。 下面是我的绑定代码。

$(".pic-cont").on("tap",{count: "not needed"},function(event){
        console.log("Clicked");
        ....

我正在制作游戏,用户将快速点击屏幕上的内容,我注意到当你快速点击手指时可能会滑动并且不会注册点击事件。是否有任何其他可以使用的事件(如触地事件),因此当用户手指触及屏幕时,无论手指向左或向下移动还是按住,都会立即注册事件。

谢谢!

3 个答案:

答案 0 :(得分:3)

对于jQuery Mobile,几乎没有解决方案,但是一个可以适用于你的情况。

解决方案1 ​​ - jQuery解决方案

您应该使用touchstart事件代替tap事件。它像点击一样工作,同时它是在屏幕滑动期间触发的第一个事件。

这是一个代码示例:

$(document).on('pagebeforeshow', '#index', function(){       
    $(document).on('touchstart', '#index', function(){       
        alert('touchstart');
    });
});

我为你做了一个工作的例子:http://jsfiddle.net/Gajotres/vDqdD/

解决方案2 - jQuery Mobile解决方案

虽然touchstart是一个很好的解决方案,但它不适用于使用较旧的jQuery Mobile版本(1.1及更低版本)的旧Android设备。

因此,如果您需要创建防弹版,则应使用vmousedown事件而不是touchstart。

$(document).on('pagebeforeshow', '#index', function(){       
    $(document).on('vmousedown', '#index', function(){       
        alert('vmousedown');
    });
});

这是一个有效的jsFiddle示例:http://jsfiddle.net/Gajotres/vDqdD/4/

答案 1 :(得分:2)

对于游戏,最好使用原生触摸事件:https://developer.mozilla.org/en-US/docs/DOM/Touch_events。使用它们可以比使用“点击”等便利事件更加严格控制。

答案 2 :(得分:1)

您可能需要尝试使用此 Quo JS 轻量级JavaScript库来获取准确的事件。我从SO那里找到了很少的建议。它的工作非常精确且非常准确。