【发布时间】:2012-10-16 22:24:29
【问题描述】:
我有以下js sn-p:
cat_images = $(".category-description").next().find("img");
cat_images.each(function () {
url = $(this).parent().attr("href");
id = url.split("id=");
id = id[1];
url = "cat_url.php?i="+id;
this_image = this;
$.get (url, function (data) {
$(this_image).attr("src", data);
});
});
目前,只有每个循环迭代的最后一个元素被 ajax.get 部分更新。我认为这与 ajax 与循环交互不佳有关,因为在 ajax 函数中使用 this 会使其完全失败。
无论如何,在等待 ajax 在 Jquery 中完成时是否有延迟循环? (不希望混入常规 js)
【问题讨论】:
-
这是因为
get函数是非阻塞(异步)的,这意味着each循环会继续进行而不等待响应。当您从任何 get 调用获得响应时,您已经完成迭代,this_image等于最后一个。有关如何处理此问题,请参阅下面 Vega 的答案。