2

jQuery UI プログレス バーに問題があります。ページに複数の進行状況バーがあり (複数ステップの進行状況を示す積み上げ進行状況バー用)、進行状況バーを開始して値を割り当てる次のコードがあります。

function createProgressBars(progressVal, progressValMax, callback) {

progressVal = $(this).data("progress-value");
progressValMax = $(this).data("progress-val-max");

$(".progress-bar").progressbar({
    value : progressVal,
    max : progressValMax
});

callback();}
jQuery(function($){
$(document).ready(function(){

    $(".progress-bar").each(function(){
        var pv = $(this).data("progress-value"),
            pm = $(this).data("progress-max");

        createProgressBars(pv, pm);
    });
});
});

編集:HTMLコードを追加

<div class="progress-bar regular-user" data-progress-value="1000" data-progress-max="3000"></div>

<div class="progress-bar bronze-user" data-progress-value="500" data-progress-max="2000"></div>

<div class="progress-bar silver-user" data-progress-value="300" data-progress-max="2000"></div>

<div class="progress-bar gold-user" data-progress-value="200" data-progress-max="3000"></div>

aria-value-max=100しかし、私が持っている HTML 属性にはaria-value-now=0.

これらの値を正しく指定するにはどうすればよいですか? 私はプログレスバー(実際には1つ)で同じ経験をしましたが、うまくいきました。

みんなありがとう。

4

2 に答える 2

1

最初に行うことは、その時点で何も指していないcreatePogressBar2 つのパラメーターを上書きすることです。thisあなたはおそらく行うことができます:

jQuery(function($){
$(document).ready(function(){

    $(".progress-bar").each(function(){
        var pv = $(this).data("progress-value"),
            pm = $(this).data("progress-max");

       $(this).progressbar({
          value : pv,
          max : pm
       });
    });
});

またはcreateProgressBar、パラメーターのみを送信して、コードを関数に移動しthisます。

function createProgressBars(container, callback) {

progressVal = $(container).data("progress-value");
progressValMax = $(container).data("progress-val-max");

$(container).progressbar({
    value : progressVal,
    max : progressValMax
});

callback();}
jQuery(function($){
$(document).ready(function(){

    $(".progress-bar").each(function(){
        createProgressBars(this);
    });
});

編集:両方のコードを更新しました。最初のケースでthisは、一般的なセレクターではなく、正しいプログレス バーを作成するために使用する必要があります。

2 番目のケースでは、コンテナーを使用する必要があります。

そうしないと、毎回すべての進行状況バーを再生成しようとするため、奇妙な結果が生じました。

于 2013-12-20T11:31:04.160 に答える
0

pv と pm を設定し、これを関数に渡し、基本的に関数内でこれらの値を再計算します。これらの行を削除するだけでよいと思います。

progressVal = $(this).data("progress-value");
progressValMax = $(this).data("progress-val-max");
于 2013-12-20T11:31:11.393 に答える