jQuery 中ready与load事件
jquey有3种针对文档加载的方法:
//document ready
$(document).ready(function(){
//...代码...
}) //document ready 简写
$(function(){
//...代码...
}) // document load
$(document).load(function(){
// ... 代码 ...
})
一个是ready一个是load,这两个到底有什么区别呢?
在面试种,经常会被问到一个问题:ready与load哪一个先执行?答案是:ready先执行,load后执行。
DOM文档加载的步骤:
1. 解析HTML结构。
2. 加载外部脚本和样式表文件
3. 解析并执行脚本代码
4. 构造HTML DOM模型。// ready
5. 加载图片等外部文件
6. 页面加载完毕。// load
从上面的描述中,ready在第四步完成之后就执行了,但是load要在第六步完成之后才执行。
结论:
ready 是当DOM解析完以后就执行了
load 是页面上所有的元素加载完成才会触发,包括页面上的图片等等
在一个高速浏览器的时代,没人愿意等待,我们越早处理DOM越好,我们不需要等待图片资源都加载后才去处理框架的加载。
jQuery是如何处理文档加载的问题:
先看一下jQuery源码:
function completed(){
document.removeEventListner('DOMContentLoaded',completed,false);
window.removeEventListner('load',completed,false);
jQuery.ready();
}
jQuery.ready.promise = function(obj){
if(!readyList){
readyList = jQuery.Deferred();
if(document.readyState == "complete"){//webkit引擎,并且webkit版本在525以下
setTimeout(jQuery.ready);//这里设置了一个定时器最小时间去执行,主要是保证执行的正确。
}else{//火狐浏览器 或者 webkit引擎525版本以上(webkit引擎在525以上引入了DOMContentLoaded事件)
document.addEventListner('DOMContentLoaded',completed,false);
window.addEventListner('load',completed,false)
}
}
return readyList.promise(obj);
}
jquery的ready是通过promise给包装过的的,这也是jQuery擅长的手法,统一回调体系。
jQuery的具体实现方法:
1. 如果是webkit引擎,则用document的readyState属性,当值为“complete”或者“loaded”时认为是DOM解析完成
2. 对webkit引擎还有一个办法是,因为webkit在525以上的版本引入了DOMContentLOaded事件,所以在525版本之上,则可以直接注册DOMContentLoaded事件
3. 因为DOMContentLoaded时间最早其实是firefox私有事件,而其他浏览才开始引入的,所以对火狐浏览器可以直接使用该事件
jQuery 中ready与load事件的更多相关文章
- jQuery中ready与load事件
jQuery中ready与load事件(来自慕课网) jQuery有3种针对文档加载的方法 $(document).ready(function() { // ...代码... }) //docume ...
- jQuery中ready与load事件的区别
1.摘要 大家在编程中使用jQuery还有JS的时候一定会在使用之前这样: //document ready $(document).ready(function(){ ...code... }) / ...
- jQuery中ready和load的区别
<span style="white-space:pre"> </span>//document ready $(document).read ...
- jQuery学习一:jQuery中的ready和load事件
//ready事件 $(document).ready(function(){ 代码........ }); //ready事件简写: $(function(){ 代码........ }); //l ...
- 不能调用jquery中ready里面定义的函数?
现象:不能调用jquery中ready里面定义的函数 源码:<script type="text/javascript"> $(document).ready(func ...
- jquery中交替点击事件toggle方法的使用示例
jquery中交替点击事件toggle方法中有两个参数,分别是要交替执行的事件.如果不传参默认是显示隐藏功能,下面有个不错的示例,感兴趣的朋友可以参考下 复制代码代码如下: $('#clickId‘) ...
- jquery中怎样防止冒泡事件
jquery中怎样防止冒泡事件 1.利用event.stopPropagation() 2.利用return false 3.利用event.preventDefault()
- 原 jQuery中document的ready和load事件的区别?
概述: 大家在工作中用jQuery的时候一定会在使用之前这样: 1 2 3 4 5 6 7 8 //document ready $(document).ready(function(){ ...
- jQuery中的$(window).load()与$(document).ready()以及jquery $(document).ready() 与window.onload的区别
大多数jQuery实例或教程都告诉我们绑定我们的jQuery代码到$(document).ready事件.虽然$(document).ready 事件在大多数情况下都OK,但是它的解析顺序是在文档准备 ...
随机推荐
- cocos2d-x win7 部署
1. 安装 下载python https://www.python.org/downloads/release/python-279/ 2.从官网下载cocos2d-x http://www.co ...
- Set,Map与Array,Object对比
Map与Array 数据结构横向对比,用Map和Array分别实现最基本的增删改查: //增 { let theMap=new Map(); let theArray=[]; theMap.set(' ...
- microPython 的逗比报错的问题
今天搞了一天,发现了各种问题,首先最终的解决办法就是重现刷固件!!!! 重刷固件就需要清除flash! cd C:\Users\sansong\AppData\Local\Programs\Pytho ...
- [Testing][API][soapUI] 測試API 的軟體工具紀錄
soapUI 測試API 的軟體工具紀錄 http://files.cnblogs.com/vincentmylee/soapUIScript%E9%9C%80%E8%A6%81%E8%B3%87%E ...
- Tcl之Read files for synthesis
The following file is to read all design files into syntehsis tool automatically, like Cadence RTL C ...
- webstom2017最新破解 ------------ http://blog.csdn.net/voke_/article/details/76418116
webstorm 作为最近最火的前端开发工具,也确实对得起那个价格,但是秉着勤俭节约的传统美德,我们肯定是能省则省啊. 方法一:(更新时间:2018/1/23)v3.3 注册时,在打开的License ...
- Vue核心知识-computed和watch的使用场景和方法
https://www.jianshu.com/p/bb7a2244c7ca
- pl/sql编程语言
–pl/sql编程语言–pl/sql编程语言是对sql语言的扩展,是的sql语言具有过程化编程的特性–pl/sql编程语言比一般的过程化编程语言,更加灵活高效–pl/sql编程语言主要用来编写存储过程 ...
- EF-基础用法
一丶LINQ TO SQL 语法 基本格式: from c in 表名 where 条件 select c 二丶LINQ简介 LINQ是Language Integrated Query的简称,它是 ...
- 【2018百度之星初赛(A)】1002 度度熊学队列
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6375 Knowledge Point: STL - map:https://www.cnblogs.c ...