jQuery UI Slider(以编程方式设置)

jAn*_*ndy 74 jquery jquery-ui

我想在飞行中修改滑块.我尝试使用

$("#slider").slider("option", "values", [50,80]);
Run Code Online (Sandbox Code Playgroud)

此调用将设置值,但元素不会更新滑块位置.调用

$("#slider").trigger('change');
Run Code Online (Sandbox Code Playgroud)

也没有帮助.

是否有另一种/更好的方法来修改值和滑块位置?

ale*_*teg 136

这取决于您是否要更改当前范围中的滑块或更改滑块的范围.

如果它是您想要更改的当前范围中的值,则.slider()方法是您应该使用的方法,但语法与您使用的方法略有不同:

$("#slider").slider('value',50);
Run Code Online (Sandbox Code Playgroud)

或者如果你有一个带有两个手柄的滑块,它将是:

$("#slider").slider('values',0,50); // sets first handle (index 0) to 50
$("#slider").slider('values',1,80); // sets second handle (index 1) to 80
Run Code Online (Sandbox Code Playgroud)

如果它是您想要更改的范围,它将是:

$("#slider").slider('option',{min: 0, max: 500});
Run Code Online (Sandbox Code Playgroud)

  • 到目前为止工作,但它没有执行事件处理程序.事件处理程序在滑动时更新一些跨度.好像我无法手动触发幻灯片事件? (7认同)
  • 你也可以用如下数组设置一个范围滑块:$("#slider").slider('values',[50,80]); (6认同)
  • @jAndy设置滑块值将调用`change`事件处理程序,而不是`slide`事件处理程序. (3认同)
  • 如果您有一个范围滑块,则需要使用要移动的句柄的索引整数(开始0).因此,要将第一个句柄(索引0)移动到50,请使用$("#slider").slider('values',0,50); 如果要将第二个滑块(索引1)移动到50,请使用$("#slider").slider('values',1,50); (2认同)

sak*_*zai 15

对我来说,这完美触发了UI Slider上的幻灯片事件:

hs=$('#height_slider').slider();
hs.slider('option', 'value',h);
hs.slider('option','slide')
       .call(hs,null,{ handle: $('.ui-slider-handle', hs), value: h });
Run Code Online (Sandbox Code Playgroud)

不要忘记hs.slider('option', 'value',h); 在触发前设置值.否则滑块处理程序将不与值同步.

这里要注意的一点是,h如果你使用的是html ,那就是索引/位置(不是值)select.


小智 8

上述答案都没有对我有用,也许它们是基于旧版本的框架?

我需要做的就是设置底层控件的值,然后调用refresh方法,如下所示:

$("#slider").val(50);
$("#slider").slider("refresh");
Run Code Online (Sandbox Code Playgroud)

  • 报告`错误:chrome中的滑块小部件实例`错误没有这样的方法'刷新' (8认同)
  • 这适合你吗?找不到任何关于它[在文档中](http://api.jqueryui.com/slider/#method-option),我无法让它工作. (2认同)

小智 5

Mal的答案是唯一一个对我有用的答案(也许jqueryUI已经改变了),这里有一个处理范围的变体:

$( "#slider-range" ).slider('values',0,lowerValue);
$( "#slider-range" ).slider('values',1,upperValue);
$( "#slider-range" ).slider("refresh");
Run Code Online (Sandbox Code Playgroud)