如何在设置最小值或最大值后刷新 jQuery UI 滑块?

问题描述 投票:0回答:10
我有一个 ui.slider 并在运行时更改其最小值和最大值。但是,当我之后设置值时,这些更改只会反映在视图中(这会导致它触发不需要的事件)。在我看来,设置最小值和最大值后也应该刷新视图。有没有一个简单的解决方法,似乎滑块缺少刷新方法。

$("#something").slider({ range: true, values: [25, 75], min: 0, max: 100 }); $("#something").slider("option", "min", 25); // left handle should be at the left end, but it doesn't move $("#something").slider("option", "values", [25, 75]); // the left handle is now at the left end, but doing this triggers events

编辑此问题已在 jQuery UI 1.9 中修复

jquery jquery-ui slider max min
10个回答
29
投票
我不知道这是否是 jQuery UI 滑块中的错误,但无论如何,您可以做的是更改当前值(从技术上讲,将当前值设置为当前值...)以强制视图神清气爽。遵循

文档,这意味着要做这样的事情:

$(function() { var $slide = $("#something").slider({ range: true, values: [25, 75], min: 0, max: 100 }); $slide.slider("option", "min", 25); // left handle should be at the left end, but it doesn't move $slide.slider("value", $slide.slider("value")); //force the view refresh, re-setting the current value });
    

2
投票
解决了手柄重新定位问题...只需调用此函数..

function resetSlider(){ $("#slider-fill").attr('value',maxPrice); $("input[type='range']").slider( "refresh" );//refresh slider to max value $(".ui-slider-handle").css("left","100%"); console.log("Slider Reset Done."); }
    

1
投票
设置最小滑块值,例如:

$slide.slider("option", "min", 25);

 对我不起作用。

相反,我使用:

$slide.slider("values", "0", 25);

,一切正常。

要设置最大滑块值,请使用

$slide.slider("values", "1", 75);



有关设置值的更多信息,请参阅 api 文档 -

http://api.jqueryui.com/slider/#option-values


0
投票
试试这个。

valPercent = (current_slide_value - min_value) / (max_value - min_value) * 100; parentElem.find('.ui-slider-range').css('width', valPercent+'%'); parentElem.find('.ui-slider-handle').css('left', valPercent+'%');
    

0
投票
这可能是版本问题,但我尝试使用“最小/最大”选项都不起作用。这没问题,并使用 JQuery UI 1.10 进行了测试。这样您就可以使用滑块或数字来更改另一个:

$("#mySlider").slider({range: true, min: 0, max: 100, values: [ 0, 100 ], step: 10, slide: function( event, ui ) { $("#mySliderMin").val( ui.values[ 0 ]); $("#mySliderMax").val( ui.values[ 1 ]); } }); $("#mySliderMin").val($("#mySlider").slider( "values", 0 )); $("#mySliderMax").val($("#mySlider").slider( "values", 1 )); $("#mySliderMin, #mySliderMax").change(function () { $("#mySlider").slider("values", 0, $("#mySliderMin").val()); $("#mySlider").slider("values", 1, $("#mySliderMax").val()); });
    

0
投票
您可以将 jquery 函数中的 html div 更新为

var d='<div class="row grid_slider"><div><p>Grid With time in 24 hour format</p><input type="text" class="range_time24" value="" name="range" /></div></div>';document.getElementById("slider").innerHTML=d;

然后为滑块设置新值


0
投票
请尝试这个:

$("#Slider2").slider("value", 10, 1000); //10 = min and 1000 = max
    

0
投票
您可以通过先删除滑块来重新创建滑块:

$('.slider').slider('destroy')
然后使用正确的选项再次设置滑块。


0
投票
尝试添加回调

$( ".price-range-slider" ).slider({ range: true, min: 1, max: 500, values: [ 10, 50 ], slide: function( event, ui ) { $( "input.property-amount" ).val( "₹" + ui.values[ 0 ] + " Lac - ₹" + ui.values[ 1 ] + " Lac" ); console.log($("input.property-amount").val()); }, change: function( event, ui ) { console.log(ui.values); console.log('fn called'); } });
    

-3
投票
您需要保留对滑块对象的引用,

var slider = $("#something").slider({ range: true, values: [25, 75], min: 0, max: 100 }); slider.slider("option", "min", 25);

这全部列在

文档

© www.soinside.com 2019 - 2024. All rights reserved.