13

問題があります..

for(a=1;a<10;a++){
    $(".div").append("<div id="+a+"></div>")
        $.ajax({
              url: "file.php",
              data: "a="+a,
              type: "POST",
              async: false,
              success: function(data) {
                $("#"+a).html(data);
              }
        });

}
 $("div").click(function(){
        alert("it works");
 });

問題は:私はそこに入れなかったのですかfile.phpasync: falseからのデータは最後の div にのみあるため、ID 9 を使用していますが、現在はあります-データはすべての div にあるので、それは良いことですasync: false

しかし、ajaxによる読み込み中にクリックしたい場合は機能しません(すべてのajax-esが終了した後のみ)

この問題をどのように解決しますか? (たぶん、間違っているのは、私が ajax を使用しているということです。getJSON などを使用できます。)

助けてくれてありがとう

4

2 に答える 2

27

ajax呼び出しの実行中にユーザーがインターフェースを使用できるようにする場合は、をに変更する必要がありasyncますtrue。また、James Allardiceは、このシナリオでは、javascriptクロージャを使用してid、ajax呼び出しが返されたときに元の値を保持する必要があることも指摘しています。javascriptクロージャの詳細については、how-do-javascript-closures-workを確認してください。これは、stackoverflowに関する非常に優れた質問です。

for(id = 1; id < 10; id++){
    $(".div").append("<div id='" + id + "'></div>");

    (function(id) {
        $.ajax({
            url: "file.php",
            data: "a=" + id,
            type: "POST",
            async: true,
            success: function(data) {
                $("#"+ id).html(data);
            }
        });
     }(id));
}
于 2012-06-28T14:38:47.150 に答える