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 相关文章推荐
javascript多种数据类型表格排序代码分析
Sep 11 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
Jan 06 Javascript
Javascript 多物体运动的实现
Dec 24 Javascript
Javascript实现的Map集合工具类完整实例
Jul 31 Javascript
jquery.validate提示错误信息位置方法
Jan 22 Javascript
JavaScript模拟鼠标右键菜单效果
Dec 08 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
Jun 28 Javascript
JavaScript数组方法的错误使用例子
Sep 13 Javascript
AngularJS 多指令Scope问题的解决
Oct 25 Javascript
Vue动态修改网页标题的方法及遇到问题
Jun 09 Javascript
详解node登录接口之密码错误限制次数(含代码)
Oct 25 Javascript
JS script脚本中async和defer区别详解
Jun 24 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
Search Engine Friendly的URL设计
2006/10/09 PHP
ThinkPHP缓存方法S()概述
2014/06/13 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
javascript之AJAX框架使用说明
2010/04/24 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
JavaScript 五大常见函数
2018/03/23 Javascript
Vue EventBus自定义组件事件传递
2018/06/25 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
python批量替换多文件字符串问题详解
2018/04/22 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
档案接收函
2014/01/13 职场文书
有创意的广告词
2014/03/18 职场文书
商务助理求职信范文
2014/04/20 职场文书
小学开学标语
2014/07/01 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
导游词格式
2015/02/13 职场文书
收入证明范本
2015/06/12 职场文书
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL