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,但是它的解析顺序是在文档准备 ...
随机推荐
- 使用纯css鼠标移入效果,炫酷的旋转正方体
首先我们需要创建几个盒子 </div> <div class="wrap"> <div class="cube"> < ...
- 个人作业-Alpha测试
课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/ 作业要求 https://edu.cnblogs.com/campu ...
- python自动化--语言基础五面向对象、迭代器、range和切片的区分
面向对象 一.面向对象简单介绍: class Test(): #类的定义 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 def __ini ...
- 深度优先搜索DFS和广度优先搜索BFS简单解析
转自:https://www.cnblogs.com/FZfangzheng/p/8529132.html 深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每 ...
- C# datagrideview插件的使用
private void btnLogin_Click(object sender, EventArgs e) { string txtUserName = this.txtUserName.Text ...
- Xilinx FPGA编程技巧之常用时序约束详解
1. 基本的约束方法 为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取.最普遍的三种路径为: 输入路径(Input Path),使用输入约束 寄存器到寄存器路径(Register-to ...
- java_IO_2
1.字节流 InputStream(抽象类) package ioStudy; import java.io.File; import java.io.FileInputStream; import ...
- 使用cloudcompare进行对比轨迹及评价
0.预备知识: 我的系统是Ubuntu 16.04. 在其他发行版中,可能需要先安装snap(如有必要,请参阅相应的文档).快照发布在3个频道:“稳定”,“测试版”和“边缘”.“稳定版”和“测试版”频 ...
- 洛谷——P2252 取石子游戏
P2252 取石子游戏 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...
- Linux学习笔记记录(九)