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 相关文章推荐
Mootools 1.2教程 排序类和方法简介
Sep 15 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
Jul 15 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
Oct 20 Javascript
Python脚本后台运行的几种方式
Mar 09 Javascript
JS实现简易图片轮播效果的方法
Mar 25 Javascript
理解Javascript文件动态加载
Jan 29 Javascript
基于BootStrap的图片轮播效果展示实例代码
May 23 Javascript
Bootstrap 中data-[*] 属性的整理
Mar 13 Javascript
JS实现的碰撞检测与周期移动完整示例
Sep 02 Javascript
微信小程序实现点击按钮后修改颜色
Dec 05 Javascript
微信小程序实现简单文字跑马灯
May 26 Javascript
JavaScript封装单向链表的示例代码
Sep 17 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 gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
提高PHP编程效率的53个要点(经验小结)
2010/09/04 PHP
PHP 图片文件上传实现代码
2010/12/29 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
PHP命名空间和自动加载类
2016/04/03 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
javascript事件模型代码
2007/07/01 Javascript
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
angularjs结合html5实现拖拽功能
2018/06/25 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
webpack-mvc 传统多页面组件化开发详解
2019/05/07 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
基于Python实现扑克牌面试题
2019/12/11 Python
Python操作Excel的学习笔记
2021/02/18 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
shell变量的作用空间是什么
2013/08/17 面试题
安全教育感言
2014/03/04 职场文书
集体生日活动方案
2014/08/18 职场文书
材料物理专业求职信
2014/09/01 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python
一条慢SQL语句引发的改造之路
2022/03/16 MySQL