この質問に対する 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) スライダー ハンドルの移動。スライダー関数内で別の呼び出しを行っているためにバグが発生した可能性があるため、そのシーケンスを変更していますか?