JQ的ready()方法与window.onload()的区别与联系
JQ的ready()与window.onload()方法都是在文档加载完毕之后才会被触发的方法,但它们之间的区别也是很明显的。
1.区别与联系:
| $(document).ready() | window.onload() | |
| 加载时机 | 网页DOM结构加载完毕即可执行 | 网页内容全部加载完毕(包括图片、表格)才可执行 |
| 执行次数 | 多次,N次都不会被覆盖 | 只能执行一次,如果多次,前面的会被覆盖 |
| 举例 |
以下代码正确执行: $(document).ready(function(){alert(“Hello”)});
结果两次都输出 |
以下代码无法正确执行: window.onload = function() { alert(“text1”);};
window.onload = function() { alert(“text2”);};
结果只输出第二个 |
| 简写 | $(function(){}); | 无 |
由于window.onload()是在文档内容全部加载完毕之后才执行,这包括图片与表格。如果页面存在较多的图片或者大的表格,加载需要大量时间,造成页面无响应,用户体验差。而jq的ready方法无需页面内容全部加载完毕,只需DOM节点加载完成即可。比如,知道页面某处有图片而无需等待它显示出来就可以为图片绑定点击事件。因此,不建议使用window.onload()。
2.ready()与window.onload()的使用:
这2个方法都会在页面加载完毕就会被触发,那么,什么情况下需要使用这些方法呢?下面以代码说明。
<head>
<meta charset="UTF-8">
<title>window.onload</title>
<style type="text/css">
#box{
width: 200px;
height: 200px;
background-color: red;
}
</style>
<script type="text/javascript">
//window.onload=function(){
document.getElementById("btn").onclick=function(){
document.getElementById("box").style.width="400px";
document.getElementById("box").style.height="400px";
}
//}
</script>
</head>
<body>
<input type="button" name="btn" id="btn" value="确认">
<div id="box"></div>
<p>一般情况下,页面从上往下、从左到右执行。运行到document.getElementById("btn")时
发现没有“btn”元素,报null错误</p>
</body>
上面的代码分别加上注释、去掉注释点击按钮运行2次,就可以看到结果。
这是因为一般情况下,页面从上往下、从左到右执行。运行到document.getElementById("btn")时, 发现没有“btn”元素,报null错误。
如果我们加上window.onload(),页面就会在加载完元素之后才会执行js绑定,不会报错。
当然,还有一种另外一种解决方法(通常建议这样做),就是将js代码放在最后,这样也就无需加上window.onload()方法。但这样代码结构稍显混乱。如下所示:
<head>
<meta charset="UTF-8">
<title>window.onload</title>
<style type="text/css">
#box{
width: 200px;
height: 200px;
background-color: red;
}
</style> </head>
<body>
<input type="button" name="btn" id="btn" value="确认">
<div id="box"></div>
<p>一般情况下,页面从上往下、从左到右执行。运行到document.getElementById("btn")时
发现没有“btn”元素,报null错误</p>
<script type="text/javascript">
document.getElementById("btn").onclick=function(){
document.getElementById("box").style.width="400px";
document.getElementById("box").style.height="400px";
}
</script>
</body>
JQ的ready()方法与window.onload()的区别与联系的更多相关文章
- $(document).ready(function(){}) 与 window.onload = function(){} 区别
$(document).ready(fucntion(){ //在页面dom结构加载完毕后执行代码, }) window.onload = function(){ //页面所有内容加载完毕后,执行代码 ...
- $(document).ready()方法和window.onload()方法
$(document).ready()方法和window.onload()方法 $(document).ready()方法是JQuery中的方法,他在DOM完全就需时就可以被调用,不必等待这些元素关联 ...
- jQuery中$(document).ready()和window.onload的区别?
document.ready和document.load的区别?(JQ中的$(document).ready()和window.onload的区别?) window.onload,是采用DOM0级事件 ...
- 谈谈document.ready和window.onload的区别
在Jquery里面,我们可以看到两种写法:$(function(){}) 和$(document).ready(function(){}) 这两个方法的效果都是一样的,都是在dom文档树加载完之后执行 ...
- jQuery $(document).ready() 与window.onload的区别
ps:jQuery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,虽然具有类似的效果,但是它们在触发操作的时间上存在着微妙的差异. 在j ...
- $(document).ready()方法和window.onload区别
事件: javascript 和 HTML之间的交互式通过用户和浏览器操作页面时引发的事件来处理的.当文档或者它的某些元素发生某些变化和操作时,浏览器会自动生成一个事件:例如:当用户单击某个按钮时,也 ...
- [Javascript]jquery $(document).ready() 与window.onload的区别
引用:http://www.jb51.net/article/21628.htm Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload ...
- 转载jquery $(document).ready() 与window.onload的区别
jquery $(document).ready() 与window.onload的区别 投稿:mdxy-dxy 字体:[增加 减小] 类型:转载 时间:2009-12-28我要评论 Jquery中$ ...
- $(document).ready() 、 $('#id').load() 、window.onload 的区别
今天做项目的时候遇到一个问题,结果死在了$(document).ready(). $('#id').load() .window.onload的区别上.然后,就整理一下,这三者的区别. 参考文章:ht ...
随机推荐
- SUSE制作ISO源
These commands have been tested on openSUSE 11. First create a directory where you will store your I ...
- 解决VS2013中的控制台一闪而过的问题
修改项目配置,右键点击项目,在右键菜单中选择属性,然后在弹出的对话框左侧列表中中选择 “配置属性”-->“链接器”-->“系统”,然后在右侧的列表中, 在第一项”子系统“的值中选择”控制台 ...
- 无法查找或打开 PDB 文件解决办法
用VS调试程序时,有时会在VS底部的“输出”框中提示“无法查找或打开 PDB 文件”.这该怎么解决呢? 下面,我们以VS2013为例,来教大家解决办法. 工具/原料 VS 方法/步骤 打开VS20 ...
- 用 GDB 调试程序
Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的 ...
- javascript对变量和函数的声明提前‘hoist’
hoist vt.升起,提起; vi.被举起或抬高; n.起重机,升降机; 升起; <俚>推,托,举; 原文地址:http://www.bootcss.com/article/variab ...
- [SoapUI] 通过Groovy写文本文件
如果文件已经存在,先删除,然后向文件中追加失败信息 if(maxRecordFail>0){ def testResultFile = new File(projectDir+"\\T ...
- paho_c_pub 使用方法
Latest Paho Status (2) 摘自:http://modelbasedtesting.co.uk/ I last wrote about the state of Paho in Oc ...
- mybatis之generator生成代码
首先在pom文件中引入以下代码 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId&g ...
- Cocos2d-x-2.2.2开发环境配置
1.安装各种软件: Android SDK Android NDK Apache Ant Python Eclipse(adt) Cygwin(可选) Java Cocos2d-x 2.系统环境变量配 ...
- Head First Python之4持久存储
open()用法 # encoding:utf-8 try: # 写模式打开文件,若不存在该文件,则创建 out = open("data.out", "w") ...