(touchstartまたはtouchend)イベントは、ユーザーがスクロールしないことがわかっている場合にうまく機能します。これが、モバイルデバイスでイベントの解決に非常に長い時間がかかる理由clickです。デバイスは、ユーザーがスクロールしているかクリックしているかを確認するために待機しています。
このイベントのディスパッチに遅延がないため、これは非常に高速に実行されます。
$('#myButton').on('touchstart', function () {
//run click code now
});
vclickネイティブタッチイベントを使用しようとするjQueryMobileのイベントを使用することもできますが、主な問題は、を使用して複数のイベントをディスパッチできることです。vclickそのため、タイムアウトを設定して、一度に1回のクリックのみを許可する必要があります。
var clickOk = true;
$('#myButton').on('vclick', function () {
if (clickOk === true) {
clickOk = false;
setTimeout(function () {
clickOk = true;
}, 350);
//run click code now
}
return false;
});
これにより、イベントハンドラーを350ミリ秒ごとに1回だけ実行できるようになり、2番目のイベントが無視されるため、ディスパッチされる複数のイベントが処理されます。
これらのイベントハンドラーは、疑似ページが初期化されたときに実行される委任されたイベントハンドラーに設定します。
$(document).on('pageinit', '.ui-page', function () {
//bind "fast-click" event handlers now, use "$(this).find(...)" to only bind to elements of the current pseudo-page
});