5

phonegapとjquerymobileを使用してモバイルアプリケーションを開発しています。データロールなどを使用してレイアウトを作成しました。このアプリケーションでは、さまざまなページに移動するために次のようなボタンがたくさんあります。(クリックイベントをこれらのボタンに具体的にバインドするのではなく、魔法にhrefを使用するだけです)。

<a data-role="button" href="#page6">
    go to page 6
</a>

これらのボタンの問題は、every1が話している400msの遅延で、ボタンが非常に遅いことです。これらのボタンのすべてのイベントをtap/vclick / touchstart(最適なもの)に置き換えて、即座に応答することは可能ですか?彼らはダブルタップやドラッグリリースの人々に対処する必要はありません...

ありがとう

4

5 に答える 5

13

その遅延を正確に取り除くために、 LightningTouchというJSユーティリティを作成しました。これが私がそれを(ひどく)示しています。

そのライブラリの基盤はGoogleのfastButtonsであり、これは明らかに利用できなくなっています(または、利用できる場合はURLが変更されています)が、code.google.comのクリエイティブコモンズライセンスの下で利用可能でした。

Lightning Touchは、タッチスタートではなくタッチエンドでトリガーしますが、そのままでは機能しない場合は、あまり労力をかけずにタッチスタートで機能するように変更できると思います。

プレゼンテーションで、Brian Lerouxは、「PPLはこれからたわごとを解決しました」と述べた400msっぽい遅延の問題についてのスライドを持っていました。 彼は、LightningTouchがあなたの状況で機能しない場合にあなたが見るかもしれないいくつかのプロジェクトにリンクしました。そして、それらがあなたに失敗した場合、あなたは彼が同じプレゼンテーションでリンクしたこの他のリストを調べてみることができます。

あなたのためにどこかに解決策があることを願っています。(Lightning Touchが機能しない場合は、その理由を正確に知りたいので、改善することができます。)

于 2012-05-06T17:09:18.160 に答える
3

このライブラリを試してみてください:quojsそれは私にとって完璧に機能しました。

これがその例です(タッチ関数はかなり高速です)私はここでクラスを切り替えています:

$$("#man").touch(function(){
    switchGender(true);
});

$$("#woman").touch(function(){
    switchGender(false);
});

$$(".next").touch(function(){
    nextPage();
});
于 2012-12-29T13:55:35.217 に答える
2

この小さなコードは役立つはずです:

$("a").on("tap",function(e){
                         $(this).trigger("click");
                         e.preventDefault();
                         return false;
                         });

入れて

$(document).on("ready",function(){

そして出来上がり!

于 2013-10-29T10:36:58.987 に答える
0

このプラグインは大いに役立ちます

$.fn.addTouch = function() {
    if ($.support.touch) {
            this.each(function(i,el){
                    el.addEventListener("touchstart", iPadTouchHandler, false);
                    el.addEventListener("touchmove", iPadTouchHandler, false);
                    el.addEventListener("touchend", iPadTouchHandler, false);
                    el.addEventListener("touchcancel", iPadTouchHandler, false);
            });
    }
};

http://code.google.com/p/jquery-ui-for-ipad-and-iphone/

于 2012-04-05T14:12:00.877 に答える
0

このスクリプトは、デバイスがタッチ対応かどうかをテストしてから、クリックイベントをタッチエンドイベントに置き換えます。リンクとJavaScriptのonclick要素属性の両方にタッチイベントを追加します。スクリプトは、Android、iPhone、iPad、およびWindowsPhoneでテストされています。

//jQuery doc.ready
$(function () { 
    addTouchEvents();   
});

addTouchEvents = function() {
    var isTouchDevice = (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);

    if (isTouchDevice) {
        //replace link clicks with ontouchend events for more responsive UI
        $("a", "[onclick]").on("touchstart",function(e) {
            $(this).trigger("click");
            e.preventDefault();
            return false;
        });
    }
}
于 2014-05-06T17:30:39.563 に答える