JQ中$(window).load和$(document).ready区别与执行顺序


Posted in Javascript onMarch 01, 2017

JQ中的$(document).ready()大家应该用的非常多,基本每个JS脚本中都有这个函数的出现有时甚至会出现多个,那么另一个加载函数$(window).load相对出现的次数就很少了,下面为大家介绍一下两者的区别与他们的执行顺序

一般情况下一个页面响应加载的基本顺序是:域名解析 -> 加载html -> 加载js和css -> 加载图片等其他信息
那么我们在编写JS脚本时什么情况下使用$(document).ready()又在什么情况下使用$(window).load呢,我们先来了解一下两者的功能

一、$(document).ready()

从字面的意思上理解,就是文档准备好了。也就是浏览器已经加载并解析完整个html文档,dom树已经建立起来了,然后执行此函数

原生JavaScript中的写法如下:

document.ready=function(){
 alert("ready"); 
}

jQuery中的写法如下:

$(document).ready(function(){
 alert("ready");
});

$(function(){
 alert("ready");
});

二、$(window).load

在网页中所有元素(包括页面中图片,css文件等所有关联文件)完全加载到浏览器后才执行

原生JavaScript中的写法如下:

window.onload = function(){ 
 alert("onload"); 
};

jQuery中的写法如下:

$(window).load(function(){
 alert("onload");
});

两者的区别在于:

1.执行时间不同

$(document).ready()是在页面完成HTML的加载并建立了DOM树之后就开始执行,但这并不代表页面的所

有数据已经全部加载完成,一些大的图片有会在建立DOM树之后很长一段时间才行加载完成,而

$(window).load()就是整个页面已经加载完毕后才执行,包括图片等一些关联文件。

2.可以被执行的次数不同

$(document).ready()可以在JavaScript代码中出现多次,并且里面的函数或者代码都可以执行;而$(window).load()只能在JavaScript代码中出现一次,如果有多个$(window).load(),那么只有最后一个$(window).load()里面的函数或者代码才会执行,之前的$(window).load()都将被覆盖;

3.执行的效率不同

如要在dom的元素节点中添加onclick属性节点,这时用$(document).ready()就要比用$(window).load()的效率高;但是在某些时候还必须得用$(window).load()才行

总结一下就是:$(window).load()在$(document).ready之后执行,且页面中所有内容全部加载完成后才会执行,两者的使用时机一目了然,大家可以自行决定。

Javascript 相关文章推荐
RGB颜色值转HTML十六进制(HEX)代码的JS函数
Apr 25 Javascript
jQuery的链式调用浅析
Dec 03 Javascript
jQuery选择器的工作原理和优化分析
Jul 25 Javascript
js中继承的几种用法总结(apply,call,prototype)
Dec 26 Javascript
22点关于jquery性能优化的建议
May 28 Javascript
封装好的js判断操作系统与浏览器代码分享
Jan 09 Javascript
JavaScript中扩展Array contains方法实例
Aug 23 Javascript
JavaScript实现点击文字切换登录窗口的方法
May 11 Javascript
jQuery过滤选择器用法示例
Sep 12 Javascript
js数组方法reduce经典用法代码分享
Jan 07 Javascript
vue.js实现的绑定class操作示例
Jul 06 Javascript
Vue源码解析之Template转化为AST的实现方法
Dec 14 Javascript
Angular2库初探
Mar 01 #Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
Mar 01 #Javascript
JavaScript两个变量交换值的实现方法
Mar 01 #Javascript
js实现仿购物车加减效果
Mar 01 #Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
Mar 01 #Javascript
js实现拖拽功能
Mar 01 #Javascript
js实现下拉菜单效果
Mar 01 #Javascript
You might like
PHP 程序员应该使用的10个组件
2009/10/31 PHP
php curl基本操作详解
2013/07/23 PHP
php数组中删除元素之重新索引的方法
2014/09/16 PHP
php实现singleton()单例模式实例
2014/11/06 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
angular中使用Socket.io实例代码
2017/06/03 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
python创建列表并给列表赋初始值的方法
2015/07/28 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
Django的models中on_delete参数详解
2019/07/16 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
客服实习的个人自我鉴定
2013/10/20 职场文书
特岗教师个人总结
2015/02/10 职场文书
二审代理词范文
2015/05/25 职场文书
为什么node.js不适合大型项目
2021/04/28 Javascript
Python Django ORM连表正反操作技巧
2021/06/13 Python