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 相关文章推荐
浮动的div自适应居中显示的js代码
Dec 23 Javascript
node.js中的path.join方法使用说明
Dec 08 Javascript
jquery实现简单的无缝滚动
Apr 15 Javascript
基于jquery实现人物头像跟随鼠标转动
Aug 23 Javascript
jQuery Mobile 和 Kendo UI 的比较
May 05 Javascript
vue实现简单实时汇率计算功能
Jan 15 Javascript
jquery获取select,option所有的value和text的实例
Mar 06 Javascript
js分页之前端代码实现和请求处理
Aug 04 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
Mar 09 Javascript
jQuery实现遍历XML节点和属性的方法示例
Apr 29 jQuery
解决vue单页路由跳转后scrollTop的问题
Sep 03 Javascript
webpack4实现不同的导出类型
Apr 09 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
解析yii数据库的增删查改
2013/06/20 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
python3 线性回归验证方法
2019/07/09 Python
Django logging配置及使用详解
2019/07/23 Python
python基础 range的用法解析
2019/08/23 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
Python高并发和多线程有什么关系
2020/11/14 Python
python实现计算器简易版
2020/12/17 Python
python中doctest库实例用法
2020/12/31 Python
如何查看python关键字
2021/01/17 Python
日本热销NO.1胶原蛋白冻:Aishitoto爱希特多
2019/06/20 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
城市轨道专业个人求职信范文
2013/09/23 职场文书
求职信范文怎么写
2014/01/29 职场文书
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
听证通知书
2015/04/24 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server