2

2 つのハンドルを持つ jQuery スライダーがあります。2 番目のハンドルに基づいて、最初のハンドルを所定の位置にロックしようとしています。

スライドイベントの値を確認してから、最初のハンドルをロック位置に戻そうとしましたが、基本的に設定した内容を無視してスライドを続けます。

停止イベントで動作するようになりましたが、非常に扱いにくいです。

サーバーサイドから生成された JSON オブジェクトを使用して、スライダーを設定しています。これは停止イベントの私のコードです:

   $(clientID).slider({
        range: true,
        max: slider.max,
        values: [slider.minVal, slider.maxVal],
        change: afterSliderChanged,
        stop: onSliderStop
    });

    function onSliderStop(event, ui) {
    for (i in sliders.sliders) {
        var slider = sliders.sliders[i];
        var clientID = slider.cellType + "_" + slider.objectID + "_null";

        if (this.id == clientID) {
            if (ui.values[0].toString() == slider.max.toString()) {
                var values = $(this).slider('option', 'values');
                $(this).slider('option', 'values', [parseInt(slider.max - 1), parseInt(values[1])]);
            }
        }
    }

誰にもアイデアはありますか?

詳しく説明する必要がある場合はお知らせください。

ありがとう!ダニエル・ブリューワー

4

2 に答える 2

1

ドラッグされているハンドルに関連して他のハンドルをロックする方法の簡単で汚い例を次に示します。

var offset = 40;
$('#slider').slider({
    range: true,
    max: 600,
    values: [40, 80],
    slide: function(e,ui){
        if (ui.value == ui.values[0]) {
            $(this).slider('values',1, ui.value+offset);
        } else {
            $(this).slider('values',0, ui.value-offset);
        }
    }
});

あなたがやりたいことをする方法を理解するのに役立つはずです。

実例:http://jsfiddle.net/cBHdD/

于 2010-02-03T20:43:02.277 に答える