0

100 万から 500 万のスライダーがあります。ステップを 1000 に指定しているにもかかわらず、スライダーを使用すると jquery モバイルがステップを 50000 に最適化します。この動作を強制的に上書きする方法はありますか

<form>
    <label for="slider-1">Slider:</label>
    <input type="range" name="slider-1" id="slider-1" min="0" max="5000000" value="10"    step="10" />
</form>

ここでデモ:

http://jsfiddle.net/LSGAk/3/

4

1 に答える 1

1

私が間違っていなければ、jQm のソース コードを変更する場合を除いて、オーバーライドすることはできません。

その動作のソースである行は、関数refreshにあります。より正確には、次のブロック:

if ( typeof val === "object" ) {
    data = val;
    // a slight tolerance helped get to the ends of the slider
    tol = 8;
    left = this.slider.offset().left;
    width = this.slider.width();
    pxStep = width/((max-min)/step);
    if ( !this.dragging ||
        data.pageX < left - tol ||
        data.pageX > left + width + tol ) {
            return;
    }
    if ( pxStep > 1 ) {
        percent = ( ( data.pageX - left ) / width ) * 100;
    } else {
        percent = Math.round( ( ( data.pageX - left ) / width ) * 100 );
    }
}

マウス/タップとの相互作用の場合、val はオブジェクトであり、あなたの場合、pxStep は 1 よりも劣っています。したがって、ラウンドが実行されます。

PS: 私が書いたものについては完全にはわかりません。コードをざっと見ただけですが、このように動作するように思えます。

于 2013-07-16T08:02:09.233 に答える