2

我遇到了这个 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>
4

1 回答 1

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 演示

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

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

$("#amount").val('$' + valMap[ui.value] + '0');
于 2013-04-08T02:57:33.487 回答