Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的。

执行时间


window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。

$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。



也就是说$(document).ready() 会比 window.onload先执行。




编写个数不同


window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个

$(document).ready()可以同时编写多个,并且都可以得到执行




简化写法


window.onload没有简化写法


$(document).ready(function(){})可以简写成$(function(){});


什么情况下使用哪一个

优先使用document.ready


我们经常使用window.onload来绑定“页面加载”这个事件,但实际上window.onload会在页面元素全部加在完毕后执行,如果网页上有相当多的图片,我们就会察觉到Javascript执行的延迟。

jQuery为我们提供了一个document.ready方法,用来代替window.onload。

好处
尽管onload事件能够保证绝对不出错,但往往它执行的太晚了,因为它需要在页面元素全部加载完之后执行。
这使得很多页面的JS功能必须等待漫长的图片加载过程,往往用户在页面还没完全打开时已经关闭了页面…悲剧!
使用document.ready方法可以让页面“边下载,边执行”,提供更好的浏览体验。
如:
我们可以将图片预加载放在document.ready中,这样这些图片就不必等到页面加载完毕后再下载。



需要关联文件下载完毕再执行使用window.onload

另外需要注意一点,由于在$(document).ready()方法内注册的事件,只要DOM就绪就会被执行,因此可能此时元素的关联文件未下载完。例如与图片有关的HTML下载完毕,并且已经解析为DOM树了,但很有可能图片还未加载完毕,所以例如图片的高度和宽度这样的属性此时不一定有效。



jQuery

 

window.load

$(document).ready()

执行时机

必须等待网页中所有的内容加载完毕后(包括图片)才能执行

网页中所有DOM结构绘制完毕后就执行,可以能DOM元素关联的内容并没有加载完

编写个数

不能同时编写多个



以下代码无法正确执行:



window.onload = function(){



   alert("caibaojian");



};



window.onload = function(){



   alert("caibaojian.com");



};



结果只输出第二个

能同时编写多个



以下代码正确执行:



$(document).ready(function(){



   alert("Hello Caibaojian");



});



$(document).ready(function(){



   alert("Hello caibaojian.com");



});



结果两次都输出

简化写法

$(function(){



   // do something



});

Jquery代码如下:


$(window).load(function(){
// 编写代码
});


等价于JavaScript中的以下代码


Window.onload = function(){
// 编写代码
}