1

次のコードを使用して、スライダー要素を動的に作成する関数があります。

function NewDiv(){
        for (var count=0; count < parseFloat(sessvars.storey_count); count++)
            {
               var string="<br><div id='my-slider"+count+"' class='dragdealer'><div class='red-bar handle'><span id='drag-button"+count+"'>drag me</span></div></div>";
               $("body").append(string);

               var slider_id ="my-slider"+count;
               var drag_button_id = "drag-button"+count;

               //OBJECT GETS CREATED BELOW
               new Dragdealer(slider_id,{horizontal: true,x:Math.random(),animationCallback: function(x, y){
               document.getElementById(drag_button_id).innerHTML = x.toFixed(2);
            }
        });
    }
}

ただし、animationCallbackスライダーが移動するたびに呼び出される関数は、関数リスナー内に埋め込む必要があり、何らかの方法で ready イベントにバインドする必要があります。これは、値が変更されたときにスライダーを更新するための最良の方法ですか? もしそうなら、どうすればこれを行うことができますか?

4

1 に答える 1

1

すべての関数が同じ変数animationCallbackを閉じています。 したがって、それらはすべて最後のものを更新します。drag_button_id

for各クロージャーが独自の変数を取得するように、ループの本体を別の関数でラップする必要があります (Javascript にはブロック スコープがないため)。

于 2013-08-18T15:11:41.520 に答える