2

さて、非常によく似た質問がここで尋ねられました

jQuery UI スライダー - リリース時に「スライド」イベントから返される値が「変更」値と異なる

しかし、私の意見では、その答えは満足のいくものではありませんでした。ここに私の JavaScript コードがあります: http://jsfiddle.net/AsDZJ/4/

function slideVal() {
    var number = $("#number_slider").slider("value");
    $("#number_field").append('Slide: ' + number + '<br/>');
}

function changeVal() {
    var number = $("#number_slider").slider("value");
    $("#number_field").append('Change: ' + number + '<br/>');
}

$(function() {
    $( "#number_slider" ).slider({
        min: 1,
        max: 10,
        change: changeVal,
        slide: slideVal
    });

    $( "#number_slider" ).slider( "value", 5 );
});

問題は、スライダーが、変更ハンドラーが呼び出されたときとスライドハンドラーが呼び出されたときとで異なる値を報告していることです。

さて、他の質問は、関数を匿名で宣言する場合、次のように単純に ui.value を使用できることを指摘しています。

$( "#number_slider" ).slider({
    min: 1,
    max: 10,
    change: function(event, ui) {
        $("#number_field").append('Change: ' + ui.value + '<br/>');
    }
});

これにより、より一貫した結果が得られますが、私の場合のように、イベントが変化するたびに実行する複雑なロジックが多数ある場合、コードを繰り返す必要があることも意味します。さらに、計算には複数のスライダーからのスライダー値が含まれます。

明示的に宣言された関数から正しい値にアクセスするにはどうすればよいですか? jQuery UI でのこの動作はバグですか?

ありがとう

4

1 に答える 1