我已经看到一些帖子(
append supposedly immediate)有相互抵触的答案。我们使用JQuery 1.4(http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js)并且append()似乎是异步的,这样:
... var message = $.ajax({ type: "GET",url: "/getVolumes/" + _Id,async: false }).responseText; if (parseInt(message) != 0){ var $results = $(message); $MAIN_DIV.append($results); retrieveTargets(); } ... function retrieveTargets(){ var $targets = $(".resultTargets"); }
按预期执行和创建页面,但目标查询在运行时不产生任何内容。在JS控制台中运行相同的代码将按预期方式检索元素。
如果这是JQuery中的预期行为,等待直到append完成是什么正确的方法?
解决方法
所有评论都帮助追踪了这一点。我在控制台中跟着一只红鲱鱼。
问题不是同步的,而是下面的一行:
问题不是同步的,而是下面的一行:
$targets.each( function(){ ... this.html(); ...
需要的
$(this).html();
总之,每个人都是正确的。Jquery append()行为同步。