Jquery
中$(document).ready()
是什么意思?和window.onload
的区别? 还有其他什么写法或者替代方法?
$(document).ready()
的意思:在DOM加载完之后执行一个函数(这里面的DOM加载完不代表全部文件加载完,例如图片文件,虽然图的src的地址加载好了,但是图本身还没到);
- 有时候
JavaScript
写在了最前面,要操作一个DOM,可是下面的DOM还未生成完毕,就会报错,因为找不到,加$(document).ready()
就是卡在 DOM加载完毕 ,剩余资源还未加载完成这段时间内,进行所有其它事件绑定及运行其它jQuery
代码;与
window.onload
的区别:
- 1.执行时间:
window.onload
是在DOM加载完成 + DOM相关的文件下载完成 之后再执行一个函数
$(document).ready()
是在DOM加载完之后执行一个函数
$(document).ready()
要比window.onload
先执行;有时候页面还没有完全加载完毕而用户已经在操作页面,在技术上很多情况下,只要DOM已完全加载好了,JS就可以运行去操作DOM了,没必要等到全部加载完成,所以用$(document).ready()
来提前,但是当使用的JS依赖 CSS 属性值时,或者需要在元素被加载之后才能使用时(例如,取得图片的大小需要在图片被加载完后才能知道),就需要将这样的JS放到load
事件中,以免因为贪图快而带来麻烦。- 2.能够添加的数量:
window.onload
不能同时编写多个,因为我查看W3C的时候,window.onload
是一种原生的DOM的事件,决定了在window上只能添加一个,后续的会覆盖掉前面的。
$(document).ready()
可以同时编写多个,我查看jQuery中文档,他是这么介绍的.ready()
方法只能被匹配当前文档的jQuery
对象调用,也就是说他是jQuery
的方法,本质是一个函数,就可以执行多次。- 3.能否简写:
$(document).ready()
可以简写
window.onload
不能简写
下面是$(document).ready()
的简写
$(document).ready(handler)
$(handler)
$().ready(handler) //这种被不推荐
网友评论