如何动态更改 jquery ui 滑块的最小值、最大值?

2022-08-30 23:34:55

所以我有一个页面,上面有一个jquery ui滑块,它用以下内容初始化:

var min = $("#attrInformation").data("lowest_price"),
max = $("#attrInformation").data("highest_price");

    $( "#slider-range" ).slider({
        range: true,
        min: min,
        max: max,
        values: [ min, max ],
        slide: function( event, ui ) {
            var start = ui.values[0],
            end = ui.values[1];

            $("#startPrice").text(start);
            $("#endPrice").text(end);
        },
        stop: function(event,ui){
            var start = ui.values[0],
            end = ui.values[1];

            refineObject.price_min = start;
            refineObject.price_max = end;

            refineResults(refineObject);
        }
    });

我希望能够根据ajax调用的结果更改最小值,最大值和两个句柄所在的值。所以我尝试了这样的东西:

    $.get("ajax.php",options,function(data){
    $('.middle_container').html(data);          

    $('#slider-range').slider( "option", "min", $('.middle_container').find('.start_price').val() );
    $('#slider-range').slider( "option", "max", $('.middle_container').find('.end_price').val() );
    $('#slider-range').slider("value", $('#slider-range').slider("value"));

        });

其中,我的最小值和最大值包含在两个隐藏的 div 中,类和 .这目前不起作用,它不会更新最大价格,滑块的右手柄出现在左侧的位置。关于如何使它工作的任何建议?我正在使用php作为后端。start_price和end_price代码工作且正确。start_priceend_price


答案 1

确保并返回正确的值。此外,要设置滑块的值,您必须使用与设置最小/最大值相同的语法。也$('.middle_container').find('.start_price').val()$('.middle_container').find('.end_price').val()

试试这个

$.get("ajax.php",options,function(data){
    $('.middle_container').html(data);          

    $('#slider-range').slider( "option", "min", $('.middle_container').find('.start_price').val() );
    $('#slider-range').slider( "option", "max", $('.middle_container').find('.end_price').val() );
    $('#slider-range').slider( "option", "value", $('#slider-range').slider("value"));

});

答案 2

首先销毁滑块,这将完全删除滑块功能。这会将元素返回到其初始化前状态。

$("#selector").slider("destroy");

之后,您可以将新值添加到滑块中,如下所示:

$("#selector").slider({
    range: "max",
    min: 0, // min value
    max: 200, // max value
    step: 0.1,
    value: 200, // default value of slider
    slide: function(event, ui) {
        $("#amount").val(ui.value);
    }
});​

这有效。