jQuery ui slider max-value问题

时间:2010-12-10 08:25:12

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

我是jQuery-ui的新手,并且在初始化jquery-ui-slider时遇到问题。 我正在尝试创建一个具有最小值和最大值的滑块。

滑块应该只有一个手柄,应该以某个值初始化,但不知怎的,它始终设置为最大值。我有一个span元素,我在其中写下滑块的实际值,并且此范围中的值是正确初始化的。

我按如下方式启动滑块:

jQuery("#slider-range-min").slider({
    range: "min",
    min: 3,
    slide: function( event, ui ) {
        jQuery("#length").text(ui.value);
    }
});

嵌入滑块的对话框启动如下:

jQuery(".config_length").live('dblclick',function() {
    jQuery("#length-form").find("input[name=referer]").val(this.id);
    var max = jQuery(this).find("input[name$='_param']").val();
    var value = jQuery(this).find("input[name$='_value']").val();
    jQuery("#slider-range-min").slider("option","max", max);
    jQuery("#slider-range-min").slider("option","value", value);
    jQuery("#length").text(value);
    jQuery("#length-form").dialog("open");
});

'#slider-range-min'是滑块的id,'#length-form'是对话框的id,'#length'是span的id。 变量'max'和'value'都有正确的值(用Firebug控制)。

例如,如果'max'设置为250而'value'设置为100,则span中的值将为100,滑块上的句柄将位于最右侧位置(应该是250?),但是一旦我点击手柄,跨度中的值就会变为249。

修改

只有当'max'值大于100(这是max的默认值)时才会出现问题。此外,似乎我设置'max'和'value'的顺序似乎也会影响行为。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我找到了一种方法让它起作用,但我认为没有必要这样做:

    jQuery("config_length").live('dblclick',function() {
    jQuery("#length-form").find("input[name=referer]").val(this.id);
    var max = jQuery(this).find("input[name$='_param']").val();
    var value = jQuery(this).find("input[name$='_value']").val();
    if (max > 100) {
        jQuery("#slider-range-min").slider("option", "value", value).slider("option","max", max);
    } else {
        jQuery("#slider-range-min").slider("option","max", max).slider("option", "value", value);
    }
    jQuery("#length").text(value);
    jQuery("#length-form").dialog("open");
});

即使现在有效,但我想知道是否没有'正确'的方法。

答案 1 :(得分:0)

实际上,当您将对象传递给“选项”方法os滑块(第二个代码段)时,它会覆盖现有值,这意味着如果不在新选项对象中重复,则所有初始选项都为空。 除了“value”选项在语义上附属于初始值,如果要更改运行时值,则必须使用“value”方法

而不是

jQuery("#slider-range-min").slider("option",{
        max: max,
        value: value
    })

使用

jQuery("#slider-range-min").slider("option","max", max).slider("value", value);
相关问题