我有问题..
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"); });
问题是:
我没有放在那里async:来自file.PHP的false数据只在最后一个div,所以id 9
但现在有async:false – 所以数据在每个div都是好的
但是如果我想要在ajax加载时点击它不起作用(只有在完成所有ajax-es之后)
怎么解决这个问题? (也许是假的是我使用ajax,我可以使用getJSON等)
谢谢帮忙
解决方法
如果您希望用户在ajax调用运行时能够使用该界面,那么您应该将异步更改为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,async: true,success: function(data) { $("#"+ id).html(data); } }); }(id)); }