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 相关文章推荐
制作特殊字的脚本
Jun 26 Javascript
jscript之List Excel Color Values
Jun 13 Javascript
js获取url参数的使用扩展实例
Dec 29 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
Feb 24 Javascript
jQuery封装的获取Url中的Get参数示例
Nov 26 Javascript
JavaScript新窗口与子窗口传值详解
Feb 11 Javascript
jQuery照片伸缩效果不影响其他元素的布局
May 09 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
Mar 28 Javascript
JavaScript中使用指数方法Math.exp()的简介
Jun 15 Javascript
超实用的JavaScript代码段 附使用方法
May 22 Javascript
js数组的基本使用总结
Jan 18 Javascript
pnpm对npm及yarn降维打击详解
Aug 05 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
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
PHP自动更新新闻DIY
2006/10/09 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
Javascript 类与静态类的实现
2010/04/01 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
2014/09/01 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
AngularJS基础 ng-if 指令用法
2016/08/01 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
vue实现微信分享功能
2018/11/28 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
Python中属性和描述符的正确使用
2016/08/23 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
Flask框架Jinjia模板常用语法总结
2018/07/19 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
Skyscanner波兰:廉价航班
2017/11/07 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
法国在线药房:1001Pharmacies
2021/03/07 全球购物
有关爱国演讲稿
2014/05/07 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js