【问题标题】:How can I have the user change options of the jQuery UI Slider?如何让用户更改 jQuery UI 滑块的选项?
【发布时间】:2012-04-03 23:07:33
【问题描述】:

我的页面上有一个 jQuery UI 滑块。开头是:

$( "#slider" ).slider({
    value: 6,
    min: 6,
    max: 120,
    step: 6
});

效果很好。

我旁边有一个选择元素,其中有 6、12 和 24 作为选项。 我想要完成的是让用户选择 12,滑块的步长、最小值和值都变为 12(24 相同)。我已经尝试构建一个函数:

$('#dropdown').change(function(){
    $( "#slider" ).slider( "option", "value", $(this).val() );
    $( "#slider" ).slider( "option", "min", $(this).val() );
    $( "#slider" ).slider( "option", "step", $(this).val() );
    $( "#slider" ).slider( "option", "max", 120 );
});

然而,这只是将值设为 12,然后在单击滑块时,它会一直跳到末尾 (120) 并停留在那里。

我是否需要销毁滑块并从头开始重新制作?

编辑 #1:

我刚刚下载了 Firebug 并使用控制台检查了滑块,所有值都返回正确(min=12,value=12,step=12,max=120)。有谁知道它为什么这么固执,跳/坚持到底?

【问题讨论】:

  • 你能给我们看一个演示吗?
  • 我会做一个小提琴,看看它是否能做同样的事情。

标签: javascript jquery html jquery-ui jquery-ui-slider


【解决方案1】:

发现问题。 您需要将 <select> 中的值解析为 int,然后才能使用它来更改滑块的选项。

$('#dropdown').change(function()
{
    var currentVal =  parseInt($("#slider").slider("value"));
    var newOptions = parseInt($(this).val());
    $( "#slider" ).slider( "value", currentVal);
    $( "#slider" ).slider( "option", "min", newOptions );
    $( "#slider" ).slider( "option", "step", newOptions );
    $( "#slider" ).slider( "option", "max", 120 );
});

工作示例

http://jsfiddle.net/DigitalBiscuits/VSBCT/1/

【讨论】:

  • 感谢小提琴样本!如果明天没有其他人能告诉我为什么我的滑块表现得很奇怪,我可能会这样做;除了我不会预先创建 3 个滑块之外,我将根据选择对象中的值来创建它们,因为公司可能会要求稍后将更多值放入其中。
  • 我刚刚更改了这个答案。不知道你是在我之前还是之后看到的。这个新的可以根据您的需要工作。
  • 为你点赞!这让我疯了好几天!非常感谢!
【解决方案2】:

实现是正确的。但是你可以缓存结果

$('#dropdown').change(function(){
    var val = this.value;
    $( "#slider" ).slider( "option", "value", val );
    $( "#slider" ).slider( "option", "min", val );
    $( "#slider" ).slider( "option", "step", val );
    $( "#slider" ).slidYou can er( "option", "max", 120 );
});

【讨论】:

  • 不,抱歉。这并没有解决问题。而且我知道我可以缓存 $(this).val() / this.value,我只是没有找到理由。
猜你喜欢
  • 2011-05-06
  • 2010-11-15
  • 2011-05-24
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多