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 相关文章推荐
用JavaScript脚本实现Web页面信息交互
Dec 21 Javascript
js 图片等比例缩放代码
May 13 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
Apr 09 Javascript
JavaScript中的noscript元素属性位置及作用介绍
Apr 11 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
Apr 21 Javascript
Java/JS获取flash高宽的具体方法
Dec 27 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
Feb 25 Javascript
JavaScript实现带标题的图片轮播特效
May 20 Javascript
深入理解js中this的用法
May 28 Javascript
又一款js时钟!transform实现时钟效果
Aug 15 Javascript
JS div匀速移动动画与变速移动动画代码实例
Mar 26 Javascript
Vue使用虚拟dom进行渲染view的方法
Dec 26 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程序员工具
2008/05/26 PHP
PHP 加密与解密的斗争
2009/04/17 PHP
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
javascript实现C语言经典程序题
2015/11/29 Javascript
JS组件Bootstrap Table使用方法详解
2016/02/02 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
Python中顺序表的实现简单代码分享
2018/01/09 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
python字典key不能是可以是啥类型
2020/08/04 Python
降低python版本的操作方法
2020/09/11 Python
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
机电职业生涯规划书范文
2014/03/08 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
党支部四风整改方案
2014/10/25 职场文书
面试通知邮件
2015/04/20 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL