2

この jquery UI Slider で、選択したオプションのラベルが正しく表示されないという問題があります。スライダー (以下の現在のコード) は、最初は最初のオプションを表示していますが、これは私が期待するものですが、スライダーを使用して別のオプションを選択した後、最初のオプションに戻ると、2 番目の配列オプションとして表示されます。最初より。

また、1 回の明確なスワイプですべてのオプションが表示されるわけではありません。代わりに、最初の 3 つの配列文字列を表示して停止し、オプションに戻ると、配列の 4 番目の最後の文字列を表示します。私は過去1時間それをいじっていましたが、解決策はありませんでした. これを修正する方法はありますか?

コード:

<!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 デモ

「変更」コールバックはスライダーの値が変更された後に呼び出されますが、「スライド」コールバックはマウスの動きに対して呼び出されますが、値が変更される前に呼び出される場合があります。

スライダーのドキュメントには記載されていませんが、コールバック内の1行を次のように短縮できると思います。

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