欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JQuery中window.onload函数与$(document).ready()的区别实例讲解

程序员文章站 2023-11-23 18:10:22
1、window.onload函数是传统javascript自带的方法,该方法必须等待网页中所有内容[包括图片]加载完毕后才能执行;其在页面中不能同时编写多个. 2、$(docu...

1、window.onload函数是传统javascript自带的方法,该方法必须等待网页中所有内容[包括图片]加载完毕后才能执行;其在页面中不能同时编写多个.

2、$(document).ready()函数是jquery提供的文档就绪函数,等待网页中的所有dom元素解析完毕之后执行;可能dom元素关联的其他东西并没有加载完成。

说明:例如某大型图库网站要为所有的图片添加行为事件(例如:点击隐藏或显示);如果使用window.onload方法来实现,则必须等该网页每一幅图片全部加载完毕后才可以进行操作;若是采用jquery的$(document).ready()来实现,则只需要等待dom解析就绪就可以对其进行操作,不需要等待所有图片都下载完毕。(显然解析网页为dom树的速度比等待网页加载所有关联文件下载完毕的速度要快的多)

问题一: 在$(document).ready()方法内注册事件时,只要dom解析完毕就会执行;如果出现与图片有关的html下载完毕,并且解析为dom树了,但是图片还未加载完毕;此时图片的宽度和高度属性此时不一定有效,此时可以使用jquery的load()方法来解决。关于load()方法执行是在元素的onload事件中添加一个处理函数,如果处理函数绑定给window,则会在所欲的内容[窗口、框架、对象和图像]加载完毕后触发,若只作用在某个元素上,则会在该元素加载完毕后触发。【$(window).load(function(){})等价于window.onload = function(){}】

问题二:window.onload 事件一次只能保存对一个函数的引用;若重复实现该事件,后面的函数引用将覆盖前面的函数;而jquery提供的$(document).ready()函数在每次调用该方法时都会在现有的行为上追加新的行为,这些行为函数会根据注册的顺序依次执行。

例如:

function one(){alert("one")};

function two(){alert("two")};

window.onload = one;

window.onload = two;

输出结果:two 【因为后面的two函数覆盖了前面one函数,而是用$(document).ready()则不会出现该情况.】