ngr*_*od6 14 html jquery callback
是否有html()函数的回调或检查它已完成的方法.例如:
$("#some_div").html('something here');
if($("#some_div").html() == ''){
//do something here
}
Run Code Online (Sandbox Code Playgroud)
我从帖子中设置元素的html.有时候它没有加载,所以当它没有加载我想它做某事,这是可能的.我现在拥有它的方式总是做另一件事,因为它检查它有html时没有设置html.
Che*_*try 18
html()是一个同步操作.DOM的实际更新取决于您的html内容.如果你有<img>或<iframe>标签,他们将需要时间来加载.下面的语句html()应该立即看到新的html内容.
你的意思是load()吗?
[编辑]根据你的评论,这可能是你的$.ajax失败.没有html().尝试将失败处理程序附加到ajax调用并从那里重试?但是,如果您的服务器端代码以200代码静默失败,则不会调用失败事件.在这种情况下,您可以在将html值设置为元素之前验证它.
Chetan Sastry的回答(现在最高的答案)并非100%正确.
$('#some_div').html('<div id="new_div">some content</div>'); // code 1
$('#new_div').click(function(){ }); //code 2
Run Code Online (Sandbox Code Playgroud)
我不知道为什么,但在某些情况下,代码2将在代码1完成之前执行.代码1和代码2之间的时间短于0毫秒.它应该是Javascript中的一些特殊执行命令.
你必须使用cballou的方式(楼层答案= _ =!)来解决问题.例如
var sync = function(fn, millisec){
var m = millisec ? millisec : 0; //in face, 0 is enough
return setTimeout(fn,m);
};
$('#some_div').html('<div id="new_div">some content</div>'); // code 1
var code2 = function(){
$('#new_div').click(function(){ }); // run code 2, here
};
sync(code2);
Run Code Online (Sandbox Code Playgroud)