3

给定以下 jQuery 代码:

// iPad/Safari doesn't recognize the "click" event using "live", so we have to do some trickery here
var ua = navigator.userAgent, 
    event = ((ua.match(/iPad/i)) || (ua.match(/iPhone/i))) ? "touchstart" : "click";

$(".freeTimeSlot").live(event, function() {
 ...
}

在我的 iPhone 上,页面比我的手机显示区域大,所以我触摸屏幕并滚动页面。如果我的手指在滚动时恰好位于其中一个 freeTimeSlot div 中,它会激活 click 事件。

我怎样才能防止这种情况发生?

4

2 回答 2

1

如果你使用 jQuery UI,你可以试试jQuery UI Touch Punch

如果您不需要,将 jQuery UI 添加到您的页面是不值得的,所以不妨尝试以下代码片段:

$(".freeTimeSlot").on("touchmove",function(e)
{
    e.preventDefault();
    var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
    var elem = $(this).offset();
    var x = touch.pageX - elem.left;
    var y = touch.pageY - elem.top;
    if(x < $(this).width() && x > 0)
    {
        if(y < $(this).height() && y > 0)
        {
            // your code...
        }
    }
});
于 2012-08-13T17:49:34.657 回答
0

Jquery Mobile 使用 Vclicks,这是比常规点击更好的方式。他们也有触地和触地。

于 2012-08-13T17:02:46.447 回答