jQuery UI滑块:大范围的小步骤

时间:2015-10-09 07:23:27

标签: javascript jquery jquery-ui

我的过滤器有范围滑块:

var start_value_emp = Math.floor(getUrlParameter("emp_from")) ? getUrlParameter("emp_from") : 0;
var end_value_emp = Math.floor(getUrlParameter("emp_to")) ? getUrlParameter("emp_to") : 1001;

jQuery(".slider_employees_main").slider({
    range: true,
    min: 0,
    max: 1001,
    step: 1,
    values: [start_value_emp, end_value_emp],
    slide: function (event, ui) {

        var currEmpValueStartSlide = ui.values[0] > 0 ? ui.values[0] : '...';
        var currEmpValueEndSlide = ui.values[1] < 1001 ? ui.values[1] : '...';

        jQuery(".employee_select_info_main_from").html(currEmpValueStartSlide);
        jQuery(".employee_select_info_main_to").html(currEmpValueEndSlide);

        jQuery(".emp_from_main").val(ui.values[0]);
        jQuery(".emp_to_main").val(ui.values[1]);

        $(".slider_employees_main").slider("values", ui.values);
    }
});

我已将滑块步长设置为1,但是当我滑动滑块时,步长为3,4或5但不应该是1,可能是由于大规模(0 - 1001)?任何想法如何设置步骤坚持1?

1 个答案:

答案 0 :(得分:0)

我认为问题出在这里:

var currEmpValueStartSlide = ui.values[0] > 0 ? ui.values[0] : '...';
var currEmpValueEndSlide = ui.values[1] < 1001 ? ui.values[1] : '...';

由于javascripts pass by reference分配变量的样式,jQuery(".employee_select_info_main_from")jQuery(".employee_select_info_main_to")ui.values[0]ui.values[1]粘在一起,这使得ui.value[0]相等当jQuery(".employee_select_info_main_from").html()等于...时为3。尽量避免这样的引用:

 function copy( value ) {
     return JSON.parse( JSON.stringify( value ) );
 }

 var currEmpValueStartSlide = ui.values[0] > 0 ? copy( ui.values[0] ) : '...';
 var currEmpValueEndSlide = ui.values[1] < 1001 ? copy( ui.values[1] ) : '...';