读jQuery源码之五(ready事件,access)

源码3373-3461 :主要包含ready事件

1.ready和load事件

ready事件会在DOM结构加载完成的时候执行,在load事件之前触发。

load事件在文档加载完毕,所有的元素,资源(图片,css,嵌入的iframe)加载完毕触发。大多数情况下,只需要DOM结构加载完毕就可以执行js代码。

IE9+和其他浏览器都支持了DOMContentLoaded事件,针对IE9以下版本的IE浏览器可以监听onreadystatechange。新版的jQuery是不兼容旧版的IE了,源码里面只监听DOMContentLoaded事件。

2.定义了readyList来存放异步队列Deferred,并且给jQuery对象添加了ready方法。如下图:

3.继续是这句代码jQuery.ready.promise().done( fn );

3.1 首先ready是定义在jQuery下面的一个属性方法,用来触发readyList里面的函数执行,代码片段如下:

3.2 给这个ready添加了一个属性方法promise,代码如下:

  3.3 document.readyState:loading(加载中),interactive(dom加载完毕),complete(dom和资源全部加载完毕)

  3.4 绑定的completed函数为:

  触发的时候也移除这个事件,因为只需要执行一次,并且调用ready方法,触发。

3.5 3461行代码jQuery.ready.promise();这里单独一行,是无论我们是否使用了ready,都会执行。

源码3468-3517

4. access:为集合中的元素设置或读取值,这个方法在内部被很多其它的函数调用,比如attr,text,css等。里面最终用到的是setAttribute等原生方法。

待续。。。

作者:张雪飞
出处:https://zhangxuefei.site/p/15
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注