我已经看到许多帖子(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中的预期行为,那么等待append完成的正确方式是什么?
发布于 2011-02-23 08:00:11
所有的评论都有助于追踪到这一点。我在控制台跟踪一个转移注意力的问题。问题不在于同步性,而在于下一行:
$targets.each( function(){
...
this.html();
...
必须是
$(this).html();
简而言之,每个人都是正确的。Jquery append()同步执行。
发布于 2014-01-23 15:02:44
如果在append
之后不能正常工作,可以试试这个。
$('#dynamic-container').append(<your-content>) ;
setTimeout(function() {
...code which addresses elements inside #dynamic-container...
},0) ;
更多详细信息:
append
DOM不同步更新,特别是在div
的高度时遇到了这个问题,因为append
https://stackoverflow.com/questions/5085228
复制相似问题