2011-06-15 70 views
1

我真的很困惑,现在,我想,当页面结束加载所有的东西在jQuery(document).ready(function(){ ... })被触发什么触发了jQuery ready()函数? 。

那么它看起来并不像,虽然,我只是经历:在我的网页上载大型画册并为我的就绪功能添加警报。在下载完后台图像之前,似乎警报正在飞溅......是否需要等待代理用户和http网络服务器之间的通信调用ready函数?我的意思是我想让游客等待一个大的黑色div,然后“加载”文本,直到所有元素都输出(然后释放div)。

回答

1

从我的理解,这是当dom已加载。这将包括所有的脚本文件,我会假设css文件。但它不包括图像。我想知道是否使用window.onload = function(){}会是一个更好的选择。

window.onload vs $(document).ready()

+0

没什么可说的,我刚刚测试过,它按我的意愿工作。十分感谢 ! – user544262772 2011-06-15 12:15:58

4

ready事件时,所有的DOM元素装载被激发,而不是由那些元素所引用的任何图像加载完成之前。您可能希望使用load事件,该事件将等待图像加载完成。请注意文档中的注意事项。

加载事件发送到一个元素,当它和所有的子元素已完全加载。这个事件可以发送到与URL相关的任何元素:图像,脚本,框架,iframe和窗口对象。

例:

$(window).load(function() { ... do stuff ... }); 
0

ready事件triggerd毕竟DOM被完全构造。如果要等到图像加载完毕,则可以使用load事件

1

window.onload当页面上的所有内容都被加载时调用。所以,DOM,脚本,CSS和图像。

document.ready在DOM完成构建时调用,因为它正处于可以被操作/访问的阶段。所以在这种情况下,加载的是img html,但不包含图像资源。

你可以为图像做load事件:

$("#image").load(function(){ 

    $("#div_you_want_to_hide").hide(); 

}); 

或者只是等待窗口完全加载:

$(window).load(function(){ 

    $("#div_you_want_to_hide").hide(); 

}); 
+0

很好的答案:)谢谢 – user544262772 2011-06-15 13:18:24

0

正如你可以在annotated source看到,jQuery的准备是只是为大多数浏览器添加了一个监听器DOMContentLoaded,而对于ol'IE,它添加了onreadystatechange和onload。

从MDN文档,

等待整页“时,该文档已被完全加载和解析,而无需等待样式表,图片和子框架完成加载的DOMContentLoaded事件触发”,只是使用load听众或包装它的jQuery(window).load(...)