0

この質問に対する 2 番目の回答を使用して、4 ハンドルの jquery スライダーのコードを作成しました。正常に動作していましたが、同じページに複数のスライダーを作成する必要があったため、スライド機能を分離して、コードを少しモジュール化しようとしました。これで、スライダー内のハンドラーがオーバーラップし、その場合に設定した条件が完全に無視されます。

私のスライド関数のコードと、スライダー設定でそれを呼び出す方法は次のとおりです。

スライド機能:

function slidegen(event,ui,index){

    //Code for handler 0
    if(ui.handle == $("#weightage_slider_"+index+"_0").get(0)){
        if(ui.values[0] >= ui.values[1]){

            /*FOR SOME REASON THE NEXT LINE HAS NO EFFECT*/

            $("#weightage_slider_"+index).slider('values', 0, ui.values[1]); 
            return false;
        } else {
            // handle-0 will move
            // update display of colored handle ranges
            $("#weightage_slider_a_"+index).css('left', '0%');
            $("#weightage_slider_a_"+index).css('width', (to100(ui.values[0])+'%'));
            $("#weightage_slider_b_"+index).css('left', (to100(ui.values[0])+'%'));
            $("#weightage_slider_b_"+index).css('width', ((to100(ui.values[1])-to100(ui.values[0]))+'%'));
        }
    }

    /*SIMILAR CODE FOR THE REST OF THE HANDLERS HERE*/
}

スライダー設定:

$("#weightage_slider_0").slider({ 
    min: 1,
    max: 5,
    step: 0.01,
    values: handlers, // set four handles
    slide: function(event, ui) {
        slidegen(event,ui,0);
    }, 
    change: function(event, ui) {    
        changen(event,ui,0);
    }
});

(i) ui.value の変更 (ii) スライダー関数の呼び出し (iii) スライダー ハンドルの移動。スライダー関数内で別の呼び出しを行っているためにバグが発生した可能性があるため、そのシーケンスを変更していますか?

4

1 に答える 1

0

問題が解決しました!設定として使用する機能をモジュール化できないようです。範囲の問題がなければならないと思います。代わりに、以下またはこのリンクでわかるように、スライダーの作成全体をモジュール化します

function makeslider(index,h) {
        $("#weightage_slider_" + index).slider({
            min: 1,
            max: 5,
            step: 0.01,
            values: h,
            // set four handles
            slide: function(event, ui) {
                /*Generic slide function code here*/
            },
            change: function(event, ui) {
                /*Generic change function code here*/
            }, 
            create: function(event, ui) {
                /*Generic create function code here*/
            }    
        });
}

makeslider(0, handlers);
makeslider(1, handlers1);
makeslider(2, handlers2);
于 2012-12-02T22:41:05.393 に答える