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 相关文章推荐
借用Google的Javascript API Loader来加速你的网站
Jan 28 Javascript
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
Mar 02 Javascript
javascript相等运算符与等同运算符详细介绍
Nov 09 Javascript
JS中怎样判断undefined(比较不错的方法)
Mar 27 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
Jul 27 Javascript
原生js实现addClass,removeClass,hasClass方法
Apr 27 Javascript
判断数组是否包含某个元素的js函数实现方法
May 19 Javascript
js for循环倒序输出数组元素的实例
Mar 01 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
May 12 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
Sep 19 Javascript
微信小程序checkbox组件使用详解
Jan 31 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
精通php的十大要点(上)
2009/02/04 PHP
PHP 日期时间函数的高级应用技巧
2009/10/10 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
js创建对象的方式总结
2015/01/10 Javascript
Nodejs实现批量下载妹纸图
2015/05/28 NodeJs
AngularJS 简单应用实例
2016/07/28 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python用10行代码实现对黄色图片的检测功能
2015/08/10 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
tensorflow获取变量维度信息
2018/03/10 Python
Python实现线程状态监测简单示例
2018/03/28 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
python挖矿算力测试程序详解
2019/07/03 Python
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
日语专业个人的求职信
2013/12/03 职场文书
给护士表扬信
2014/01/19 职场文书
百年校庆节目主持词
2014/03/27 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
审美与表现自我评价
2015/03/09 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
2016年公司新年寄语
2015/08/17 职场文书