0

誰か知っていますか?jquery モバイルのスライダーで touchstart および touchend イベントを処理する方法は? 変更と開始イベントしか処理できませんが、タッチエンドの解決策が見つかりませんでした。

私の目標は、触れられていないときにスライダーの変更を追跡するのをブロックすることです。

どんな助けでも大歓迎です。ありがとう、

私のコード:

HTML:

<input type="range" name="slider" id="slider" class="slider" value="1000" min="500" max="20000" data-highlight="true" data-mini="true" />

JS:

タッチ後にトレースを開始します (トレースを続けます):

$('#slider').next().children('a').bind('taphold', function () {
    $('#slider').live("change", function (event, ui) {
    //do some stuff here...
    });
});

常にトレース:

 $('#slider').live("change", function (event, ui) {
    //do some stuff here...
    });

タッチ終了後にトレースを停止:

??? どうにかしてトレースを停止する必要があります

4

1 に答える 1

2

を使用するのはどうですかvmouseup。ドキュメントに記載されているように、これは touchend または mouseup イベントを処理するために使用する必要があるイベントです。

それをunbindの使用と組み合わせて、目標を達成できますか?

編集:

私はクロムと以下でテストしました

$('#slider').next().children('a').bind('taphold', function() {
    console.log("bind");
    $('#slider').bind("change", function(event, ui) {
        console.log(this.value);
    });
});

$('#slider').next().children('a').bind('vmouseup', function() {
    console.log("unbind");
    $('#slider').unbind("change")
});

期待どおりに動作します。コンソールでは、タップホールド (ラップトップでは長いクリック) を行うと「バインド」が発生し、すべての移動で値が出力されます。マウスを放すと「バインド解除」が表示され、事前に保持せずにスライドしても値が出力されません(スライダーボックスで値が変更された場合も出力されません)。

于 2012-05-08T09:44:38.543 に答える