如何在执行回调函数之前等待jQuery的加载函数呈现加载的内容

时间:2010-06-21 15:22:00

标签: jquery load

我正在使用jQuery的加载函数在文档准备就绪时呈现我的一些内容。

$(document).ready(function(){
   $('#header').load('header.html',function() {
      //do call back function});
   $('#footer').load('footer.html');
});

我不希望我的回调函数在请求完成时执行,而是在加载的内容(或dom?)准备好被操作时。我怎么能这样做?

由于

2 个答案:

答案 0 :(得分:2)

我很确定你在加载Window之后想要做什么,而不是DOM。

如果你有一些代码依赖于读取图像,(文档)之类的东西的高度和宽度。已经无法工作,因为它是在图像加载之前运行的。我在尝试在页面上呈现RSS源之前遇到过这个问题。

这是在加载窗口后执行某些操作的代码:

jQuery(window).load(function() {
    //Do something after the window is loaded!
});

答案 1 :(得分:1)

根据我的理解,这里的问题是一旦收到数据就会调用回调,而不是在浏览器完成呈现时调用。如果您的回调依赖样式属性作为一个示例,则会出现问题。

我的解决方案是在加载之前隐藏父节点,然后在再次显示之前稍加延迟,并在show方法上放置一个回调。

$('#header').hide().load('header.html').delay(1).show(0, function(){
    //callback statements
});

所以这样可行,但不是防弹的,因为我们不确切知道内容需要多长时间才能呈现。