9

jQuery UI スライダーがあります。

$('div.slider').slider({
    range: true,
    step: 250,
    min: 1000,
    max: 500000,
    values: [1000,500000],
    change: function(event, ui){
        console.log($(this).slider('values', 0)+','+$(this).slider('values', 1));
    },
    slide: function(event, ui){
        console.log($(this).slider('values', 0)+','+$(this).slider('values', 1));
    }
});

なんらかの理由で、スライダー (マウスアップ) を放すと、値が元の値からわずかに変化します。スライド イベントは、変更イベントとは異なるものを返しています。これを引き起こしている可能性のあるものと、それを解決する方法を知っている人はいますか?

変更イベントのコールバックでかなり激しい操作を行います (つまり、sldie だけを使用することはできません)。また、スライダーの値をライブで表示する必要があるため、1 つまたは 1 つだけを使用することはできません。他の。

これは、この奇妙な動作のフィドルです: http://jsfiddle.net/5W6Zh/

前もって感謝します

4

4 に答える 4

13

私は解決策を見つけました!常にスライドイベントでこれを行います。

$(this).slider('value', ui.value);

そして、あなたは行ってもいいです

于 2012-09-07T12:39:16.617 に答える
13

私たちは今夜(そして昨夜、そして過去数ヶ月間)これに遭遇しました。これを修正するために、$("#slider").slider('values',0) の代わりに ui.value と ui.values[0] を使用しました。

これを使って:

change: function(event, ui) {
  $('.values').text(ui.values[0] + ',' + ui.values[1]);
}

それ以外の:

change: function(event, ui) {
  $('.values').text($(this).slider('values', 0) + ',' + $(this).slider('values', 1));
}

私はあなたの jsfiddle をフォークして動作させました: http://jsfiddle.net/danhixon/9JdhU/1/

正直なところ、あなたの質問と jsfiddle がなければ解決策を見つけられなかったと思います。この違いが見つかるまで、jquery-ui デモと比較し続けました。

于 2012-08-17T09:44:48.670 に答える
2

より正確な値を取得するには、スライド ハンドラーで ui.value を使用します。

于 2012-02-26T17:47:17.150 に答える
0

あなたの最小値、最大値、およびステップ値は少し奇妙に見えますが、それらが混同されているだけだと思います.

1 よりもはるかに小さいステップではスライダーがうまく機能しないことがわかったので、整数のみを使用して後で除算するように変更しました。それ以来、問題は一度もありませんでした。

于 2012-02-02T22:52:45.583 に答える