2012-02-02 9 views
8

異なっている:いくつかの奇妙な理由でjQueryのUIスライダー値は、リリースの「スライド」イベントから返されたが、私は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)); 
    } 
}); 

を、スライダーを解放する(のmouseup)価値はそれがされていたものから若干変化します。スライドイベントは、変更イベントとは異なるものを返しています。誰でもこれを引き起こしている可能性のあるアイディアや解決方法を知っていますか?

私はchangeイベント(単にsldieを使うことはできません)のコールバックでかなり強い操作を行うつもりですが、スライダーの値をライブで表示する必要があるため、使用できませんどちらか一方だけ。

は、ここでのアクションでこの風変わりでフィドルです:あなたの分は、maxとステップ値は少し奇妙に見える

+1

を行ってもいいです:常にスライドイベントでこれを行いますそれは左端から値をとります。また、トラックをクリックするだけでこのエフェクトが生成されることはないので、ボタンの背後にあるコードがドラッグ/リリースに異なる参照ポイントを使用していると思う傾向があります。 – sottenad

答えて

12

私たちは今夜(そして最後の夜、過去数ヶ月間)この問題に遭遇しました。これを修正するためにしたのは、$( "#slider")の代わりにui.valueとui.values [0]を使用したことでした。slider( '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デモと比較し続けました。

0

事前にhttp://jsfiddle.net/5W6Zh/

おかげで、私はあなたがちょうどそれらが混ざってしまったと思います。

スライダーが1よりもはるかに小さいステップでうまく動作しないことがわかったので、整数だけを使用して後で分割するように変更しました。それ以来何の問題もありませんでした。

+1

私は上記の値に変更しましたが、残念ながらこの奇妙さ。 :/ – wyqydsyq

2

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

13

解決策が見つかりました。あなたが/スライダをスライドつかむとき、それはボタンの中心から値がかかりますが、ときあなたのように見えます

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

そして、あなたは

+1

それだけです!私はあなたを愛して、おい! –

+0

私のスライダは '[object Object]'のみを返しています。 – nipponese

+2

完璧!今日の私の机の上で私の頭を叩いていました。私は1年遅れているのを知っていますが、@ nipponese、それは範囲スライダーなので '[オブジェクトオブジェクト]'を得ています: '$(this).slider ( 'values'、ui.values [0]); ' – kingkode

関連する問題