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中格式化日期时间型数据函数代码
Nov 08 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
Dec 25 Javascript
javascript中定义私有方法说明(private method)
Jan 27 Javascript
浅谈JavaScript字符串拼接
Jun 25 Javascript
JS仿百度自动下拉框模糊匹配提示
Jul 25 Javascript
微信小程序 swiper组件详解及实例代码
Oct 25 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
Aug 04 Javascript
jQuery UI实现动画效果代码分享
Aug 19 jQuery
AngularJS $http post 传递参数数据的方法
Oct 09 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 Javascript
vue中的使用token的方法示例
Mar 10 Javascript
electron 如何将任意资源打包的方法步骤
Apr 16 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中检查文件或目录是否存在的代码小结
2012/10/22 PHP
PHP Web木马扫描器代码分享
2015/09/06 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
2018/03/15 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
能源工程专业应届生求职信
2014/03/01 职场文书
租赁意向书范本
2014/04/01 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers
JS函数式编程实现XDM一
2022/06/16 Javascript