在Ajax回调之后替代setTimeout

时间:2010-10-22 01:28:47

标签: javascript jquery ajax settimeout

我发现自己做了很多这样的事情:

window.onload = function(){

   $.get("http://example.com/example.html", function(data) {
       $('#contentHere').html(data);

       setTimeout("javaScriptClass.init()", 200);
   });

}

但是setTimeout似乎有点hacky(200ms已经超过普通用户注意力的三倍:)。什么是最好的选择?

修改

javaScriptClass.init()根据ajax调用中加载的内容对DOM对象进行操作

1 个答案:

答案 0 :(得分:1)

我认为这里有一些关于负载的混淆,你可以这样做:

window.onload = function(){    
   $.get("http://example.com/example.html", function(data) {
       $('#contentHere').html(data);
       javaScriptClass.init();
   });    
}

$('#contentHere').html(data);之后,DOM元素就可以使用了。另请查看.load()附件(如果其他 onload处理程序可能需要附加),如下所示:

$(window).load(function(){    
   $.get("http://example.com/example.html", function(data) {
       $('#contentHere').html(data);
       javaScriptClass.init();
   });    
});

尽管如此,除非您在等待图片,否则可以在document.ready处理程序中调用此功能并更快启动,从而获得更好的用户体验。