【发布时间】:2011-07-02 09:31:11
【问题描述】:
我看到许多帖子 (append supposedly immediate) 在此问题上接受的答案相互矛盾。我们正在使用 JQuery 1.4 (http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js) 并且 append() 似乎是异步的,这样:
已编辑以在 AJAX 回调上下文中显示代码
...
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 中的预期行为,那么等待追加完成的正确方法是什么?
【问题讨论】:
-
jQuery 1.8??怎么会??你来自未来?? :)
-
Append 是同步的,但您的 Ajax 调用不是。此代码位于何处?在你的ajax调用的回调函数中?
-
用正确的版本编辑。我敢打赌这会在 1.8 中按我想要的方式工作。
-
什么是.resultTargets?它是您的 ajax 响应中的一个元素吗?你也可以这样访问它: var targets = $results.find('.resultTargets');
-
如果将
console.log( $MAIN_DIV.length )放在$MAIN_DIV.append(...之前会发生什么?
标签: jquery asynchronous append