JQuery下关于$.Ready()的分析


Posted in Javascript onDecember 13, 2009

$(document).Ready()方法 VS OnLoad事件 VS $(window).load()方法
接触JQuery一般最先学到的是何时启动事件。在曾经很长一段时间里,在页面载入后引发的事件都被加载在”Body”的Onload事件里.

对于Body的Onload事件和JQuery的Ready方法相比,有很多弊端.比如:

1.加载多个函数的问题
<body onload="a();b();">
</body>

在Onload事件中只能这样加载,很丑陋…而在JQuery中你可以利用多个JQuery.Ready()方法,它们会按次序依次执行

2.代码和内容不分离
这个貌似不用说了,让人深恶痛绝-.-!!

3.执行先后顺序不同
对于Body.Onload事件,是在加载完所有页面内容才会触发,我的意思是所有内容,包括图片,flash等.如果页面的这些内容很多会让用户等待很长时间.

而对于$(document).ready()方法,这个方法只是在页面所有的DOM加载完毕后就会触发,无疑很大的加快了网页的速度.

但是对于一些特殊应用,比如图片的放大缩小,图片的剪裁。需要网页所有的内容加载完毕后才执行的呢?我推荐使用$(window).load()方法,这个方法会等到页面所有内容加载完毕后才会触发,并且同时又没有OnLoad事件的弊端.

<script type="text/javascript"> 
$(window).load(function() { 
alert("hello"); 
}); 
$(window).load(function() { 
alert("hello again"); 
}); 
</script>

上面的代码会在页面所有内容加载完成后按先后顺序依次执行.

当然不要忘了与之对应的Unload方法

$(window).unload(function() { 
alert("good bye"); 
});

上面代码会在页面关闭时引发.

在所有DOM加载之前引发JS代码
这个方法是我在调试的时候最喜欢的,有时候开发的时候也用这种方法

<body> 
<script type="text/javascript"> 
(function() { 
alert("hi"); 
})(jQuery) 
</script> 
</body>

对,就是利用js闭包的形式将js代码嵌入body,这段代码会自动执行,当然也可以直接嵌入js代码,这种方式要注意顺序问题,如下:
<body> 
<div id="test">this is the content</div> 
<script type="text/javascript"> alert($("#test").html());//I Can display the content 
</script> 
</body> 
<body> 
<script type="text/javascript"> 
alert($("#test").html());//I Can't display the content 
</script> 
<div id="test">this is the content</div> 
</body>

上面两段代码,第二段代码当中因为只能解释到当前代码之前的DOM,而test并不存在于已经解析的DOM数.所以第二段代码无法正确显示.
Javascript 相关文章推荐
用js调用迅雷下载代码的二种方法
Apr 15 Javascript
javascript中call和apply方法浅谈
Sep 27 Javascript
js时钟翻牌效果实现代码分享
Jul 31 Javascript
探讨JavaScript语句的执行过程
Jan 28 Javascript
浅析Bootstrap缩略图组件与警示框组件
Apr 29 Javascript
全面了解构造函数继承关键apply call
Jul 26 Javascript
Javascript动画效果(1)
Oct 11 Javascript
Vue中的混入的使用(vue mixins)
Jun 01 Javascript
微信小程序之自定义组件的实现代码(附源码)
Aug 02 Javascript
Node.js 多进程处理CPU密集任务的实现
May 26 Javascript
Node.js学习之内置模块fs用法示例
Jan 22 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
Sep 04 Javascript
javascript与asp.net(c#)互相调用方法
Dec 13 #Javascript
JavaScript 字符串与数组转换函数[不用split与join]
Dec 13 #Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
Dec 13 #Javascript
页面中iframe相互传值传参
Dec 13 #Javascript
jquery提示 &quot;object expected&quot;的解决方法
Dec 13 #Javascript
js 加载并解析XML字符串的代码
Dec 13 #Javascript
javascript 强制刷新页面的实现代码
Dec 13 #Javascript
You might like
PHP数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
php筛选不存在的图片资源
2015/04/28 PHP
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
2011/09/28 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
antd form表单数据回显操作
2020/11/02 Javascript
python简单的函数定义和用法实例
2015/05/07 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
Python语言描述最大连续子序列和
2017/12/05 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
django实现用户注册实例讲解
2019/10/30 Python
Python学习笔记之装饰器
2020/08/06 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
css3加js做一个简单的3D行星运转效果实例代码
2017/01/18 HTML / CSS
高分子材料与工程专业个人求职信
2013/12/15 职场文书
婚礼证婚人证婚词
2014/01/13 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
社区母亲节活动总结
2015/02/10 职场文书
个人年度总结报告
2015/03/09 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
PYTHON InceptionV3模型的复现详解
2022/05/06 Python