您的位置:首页 > Web前端 > JQuery

JQuery学习一【window.onload函数与$(document).ready()的区别】

2018-02-01 23:28 489 查看
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()则不会出现该情况.】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: