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 相关文章推荐
js检查页面上有无重复id的实现代码
Jul 17 Javascript
js判断是否为ie的方法小结
Jan 13 Javascript
原生JavaScript编写俄罗斯方块
Mar 30 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
May 23 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
May 27 Javascript
javascript回到顶部特效
Jul 30 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
Jul 28 Javascript
vue调试工具vue-devtools安装及使用方法
Nov 07 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
Apr 12 Javascript
layui实现鼠标移动到单元格上显示数据的方法
Sep 11 Javascript
JavaScript中this函数使用实例解析
Feb 21 Javascript
jQuery 移除事件的方法
Jun 20 jQuery
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 FLEA中二叉树数组的遍历输出
2012/09/26 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
事件模型在各浏览器中存在差异
2010/10/20 Javascript
使用jQuery判断IE浏览器版本的代码
2014/06/14 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
Python读写Excel文件方法介绍
2014/11/22 Python
python插入数据到列表的方法
2015/04/30 Python
详解Python3中字符串中的数字提取方法
2017/01/14 Python
Python多线程扫描端口代码示例
2018/02/09 Python
Java程序员常见面试题
2015/07/16 面试题
银行开业庆典方案
2014/02/06 职场文书
商场周年庆活动方案
2014/08/19 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
党员带头倡议书
2015/04/29 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS