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では、ページが電話の表示領域よりも大きいので、画面をタッチしてページをスクロールします。スクロールしたときに指がfreeTimeSlotdivのいずれかにあると、クリックイベントがアクティブになります。

どうすればこれが起こらないようにできますか?

4

2 に答える 2

1

jQuery UIを使用している場合は、jQuery UITouchPunchを試してみることができます

必要がなければ、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 に答える