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 相关文章推荐
解决Extjs上传图片无法预览的解决方法
Mar 22 Javascript
解析Javascript中难以理解的11个问题
Dec 09 Javascript
JavaScript中自定义事件用法分析
Dec 23 Javascript
jquery实现九宫格大转盘抽奖
Nov 13 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
Dec 03 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
Apr 29 Javascript
Canvas实现放射线动画效果
Feb 15 Javascript
详解vue-router2.0动态路由获取参数
Jun 14 Javascript
jQuery DOM节点的遍历方法小结
Aug 15 jQuery
React如何将组件渲染到指定DOM节点详解
Sep 08 Javascript
AngularJS 应用模块化的使用
Apr 04 Javascript
在vue中给后台接口传的值为数组的格式代码
Nov 12 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
Yii2中关联查询简单用法示例
2016/08/10 PHP
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
2017/08/08 jQuery
javaScript中&quot;==&quot;和&quot;===&quot;的区别详解
2018/03/16 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
JS实现放烟花效果
2020/03/10 Javascript
通过vue刷新左侧菜单栏操作
2020/08/06 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python处理大数字的方法
2015/05/27 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
python 文件转成16进制数组的实例
2018/07/09 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
pytorch数据预处理错误的解决
2020/02/20 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
电大自我鉴定
2013/10/27 职场文书
采购主管工作职责
2013/12/12 职场文书
商场端午节活动方案
2014/01/29 职场文书
贷款承诺书范文
2014/05/19 职场文书
早读课迟到检讨书
2014/09/25 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
活着观后感
2015/06/03 职场文书
新生儿未入户证明
2015/06/23 职场文书
详解redis在微服务领域的贡献
2021/10/16 Redis