Jquery UI滑块不一致

时间:2013-04-08 02:53:51

标签: jquery jquery-ui

我遇到问题,这个jquery UI Slider没有正确显示所选选项的标签。滑块(下面是我当前的代码)首先显示第一个选项,这是我所期望的,但是在使用滑块选择另一个选项后,再回到第一个选项,它显示为第二个数组选项而不是比第一次。

它也没有在一次清晰的滑动中显示所有选项;相反,它显示前三个数组字符串,然后停止,然后当你返回一个选项时,它显示数组中的第四个和最后一个字符串。过去一小时我一直在玩它,但还没有得到任何解决方案。有什么方法可以解决这个问题吗?

代码:

<!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8" />
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />

<style type="text/css">
#slider {
width: 300px;
}
#itemlabel {
text-align: center;
}
</style>

  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
<script type="text/javascript">
$(function() {
    var valMap = [1.5, 2.5, 5.5, 10.5];
    $("#slider").slider({
        min: 0,
        max: 3,
        value: 0,
        slide: function(event, ui) {                        
            $("#amount").val('$' + valMap[$("#slider").slider("value")] + '0');            
        }       
    });
    $("#amount").val('$' + valMap[$("#slider").slider("value")] + '0');
});
</script>
</head>
<body>

<center><div id="planlabel"><p>
  <label for="amount">Item:</label>
  <input type="text" id="amount" style="border: 0; color: #f6931f; font-weight: bold;" />
</p></div>
<div id="slider"></div></center>

1 个答案:

答案 0 :(得分:4)

只需将“幻灯片”更改为“更改”。

$(function() {
    var valMap = [1.5, 2.5, 5.5, 10.5];
    $("#slider").slider({
        min: 0,
        max: 3,
        value: 0,
        change: function(event, ui) {                        
            $("#amount").val('$' + valMap[$("#slider").slider("value")] + '0');
        }       
    });
    $("#amount").val('$' + valMap[$("#slider").slider("value")] + '0');
});

jsfiddle demo

在滑块的值更改后调用“change”回调,而为鼠标移动调用“slide”回调,但它可能在值更改之前。

虽然滑块文档没有说明,但我相信你可以将回调中的一行缩短为:

$("#amount").val('$' + valMap[ui.value] + '0');