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 相关文章推荐
jQuery插件 tabBox实现代码
Feb 09 Javascript
extjs 04_grid 单击事件新发现
Nov 27 Javascript
node.js中 stream使用教程
Aug 28 Javascript
使用js获取伪元素的content实例
Oct 24 Javascript
Vue完整项目构建(进阶篇)
Feb 10 Javascript
vue中子组件的methods中获取到props中的值方法
Aug 27 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
Dec 29 jQuery
js实现AI五子棋人机大战
May 28 Javascript
vue+animation实现翻页动画
Jun 29 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
Oct 24 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
微信小程序 根据不同用户切换不同TabBar
Apr 21 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中实现简单的ACL 完结篇
2011/09/07 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
javascript indexOf函数使用说明
2008/07/03 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
JavaScript中链式调用之研习
2011/04/07 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
JavaScript实现鼠标移入随机变换颜色
2020/11/24 Javascript
Djang中静态文件配置方法
2015/07/30 Python
pandas object格式转float64格式的方法
2018/04/10 Python
python 读写文件,按行修改文件的方法
2018/07/12 Python
Python实现端口检测的方法
2018/07/24 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
Python urlencode和unquote函数使用实例解析
2020/03/31 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
继续教育个人总结
2015/03/03 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android
nginx设置资源请求目录的方式详解
2022/05/30 Servers