1

私は現在、jQuery-Mobile を使用している webapp に取り組んでいます。update-ui-function (トラックの時間と長さ) でサーバーからデータを取得し、それらを使用して音楽トラックの現在の位置を表示します (時間はスライダーの値、長さは最大です)。これはうまくいっています。

ユーザーが前のトラックにジャンプすると、奇妙になります。update-ui-function が毎秒実行されるため、スライダーが完全にリセットされることが予想されます。しかし、そうではありません。少しジャンプしますが、最後までではなく、その後更新されません。写真は百の言葉に値するので:

正しく動作している場合のスライダー

正しく動作している場合のスライダー

ユーザーが前のトラックにジャンプした後のスライダー

ユーザーがジャンプした後のスライダー

繰り返しますが、私の問題は、 update-ui-function が2つの時間表示を正しく更新しても、スライダーがリセットされず、動きが止まることです。

スライダーが更新される方法は次のとおりです。

//Get the current position (time)
$(this).find("time").each(function(){
    time = $(this).text();
});

//And the total length (time)
$(this).find("length").each(function(){
    length = $(this).text();
});

//Set slider and ps
$("#positionSlider").attr("max", length);
$("#positionSlider").attr("value", Number(time)).slider("refresh");

//The time-displays which are updatet correctly
$("#currentTime").text(format_time(time));
$("#totalTime").text(format_time(length));

更新前に max- 属性と value- 属性をリセットしようとしましたが、これはスライダーが完全に機能しなくなるという事実につながりました。スライダーを削除してDOMに再度追加すると、cssが台無しになりました。

どんな助けやアイデアも大歓迎です。

編集: HTML マークアップ

<div id="position">
    <input id="positionSlider" class="ui-hidden-accessible" type="range" name="slider-mini" id="slider-mini" value="0" min="0" max="100" data-highlight="true" data-mini="true" />
    <p id="currentTime">00:00:00</p><p id="totalTime">00:00:00</p>
</div>
4

2 に答える 2

1

.prop()の代わりに使用.attr():

属性とプロパティ

特定の状況では、属性とプロパティの違いが重要になる場合があります。jQuery 1.6 より前では、一部の属性を取得するときに .attr() メソッドがプロパティ値を考慮に入れることがあり、一貫性のない動作を引き起こす可能性がありました。jQuery 1.6 以降、.prop() メソッドはプロパティ値を明示的に取得する方法を提供し、.attr() は属性を取得します。たとえば、selectedIndex、tagName、nodeName、nodeType、ownerDocument、defaultChecked、および defaultSelected を取得して、.prop() メソッドで設定する必要があります。jQuery 1.6 より前では、これらのプロパティは .attr() メソッドで取得できましたが、これは attr の範囲内ではありませんでした。これらには対応する属性がなく、単なるプロパティです。

ソース: http://api.jquery.com/prop/

于 2013-10-01T16:05:49.147 に答える
1

.attr('value', value)を使用する代わりに.val()、メソッドを呼び出しますrefresh

デモ

$("#positionSlider").val(value).slider("refresh");
于 2013-10-01T16:08:20.077 に答える