我是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'的顺序似乎也会影响行为。
我做错了什么?
答案 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);