jQuery的文档处理程序详解


Posted in Javascript onMay 10, 2016

本文实例讲述了jQuery的文档处理程序。分享给大家供大家参考,具体如下:

jQuery文档处理程序

所谓的文档处理程序,是指jQuery中提供的$(document).ready事件,此事件会在dom加载完毕后触发,而window.onlaod和body.onload都是在页面完全加载后触发。

jQuery文档处理程序介绍

在jQuery中想实现在DOM加载完毕后的处理逻辑,只需要使用$(document).ready()事件。此事件函数称为"jQuery文档处理程序"。

可以在页面的任何位置,甚至是外部的js文件中,编写如下列语句:

$(document).ready(function (){ alert("document.ready")});

则在页面的DOM加载完毕后,会立刻执行alert语句。如果页面上有大的图片、js文件等外部资源需要加载,jQuery的文档处理程序会在其之前执行,而window.onload和boyd.onload是在所有的资源文件加载完毕后执行的。

Ready()函数时jQuery"事件函数"中提供的一个jQuery对象函数,签名位ready(fn)。

fn是ready事件发生时执行的函数。

因为是jQuery对象函数,意味着可以在任何jQuery对象上调用:

$("body").ready(function (){ alert("body.ready")});

上面的语句等同于:

$(document).ready(function (){alert("body.ready")});

虽然ready()函数可以作用在任何jQuery对象上,但是使用时一定要注意对象是否具有ready事件。

也可以使用"$(fn)"这种简化的形式:

$(function (){….})
//等效于$(document).ready(function(){…});

同jQuery中所有的事件对象一样,$(document).ready事件,会按照出现的先后顺序执行。

比如,可以调用两次$(document).ready事件:

$(document).ready(function (){alert("document.ready-1")});
$(document). ready(function (){alert("document.ready-2")});

则在DOM加载完毕后,首先输出"document.ready-1",然后输出"document.ready-2"。如果使用传统的:

Window.onload=function(){…..};

上面的代码会将window.onload原有的事件处理掉,然后绑定新的事件。

jQuery文档处理程序的优势

如果脚本需要在页面加载时执行,那么大部分的脚本都可以放在$(document).ready()事件中。

在举例jQuery文档处理程序的优势之前,先看一个常见的JavaScript编程错误:dom未加载完成即改变dom模型。

在传统的javascript编程中。有时会在页面的头部或者底部直接插入script模块并编写代码,比如下面的例子:

<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 
Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>jQueryStorm ? 常见错误编程方式举例</title>
  <scriptlanguage="javascript"type="text/javascript"src="../include/jquery-1.7.1.js"></script>
</head>
<body>
<!-- 页面内容部分 ?>
<div id="divMsg" style="border:solid 1px#000000;padding:20px;"></div>
<!-- 尾部模块 -->
<script language="javascript" type="text/javascript">
  //这条语句在某些情况下会导致错误
  Document.getElementById("divMsg").innerHTML="<divstyle=\"border:solid 2px #FF0000\">动态添加的图层</div>";
</script>
</boyd>
</html>

此例子在所有的浏览器都运行良好,但是存在隐患。因为在页面加载时,就在divMsg容器中添加了一个新的div对象,也就是添加了一个dom对象,当网速变慢或者页面很大需要一定的加载时间,会出现"中止操作"的错误。

这个错误甚至曾经在Google首页、淘宝等知名网站上都出现过,因为此错误很难在测试时候发现。

所以做web开发是要记住一条真理:永远不要再dom加载时修改dom结构。

如果需要在页面加载时修改dom结构,原始的做法是通过window.onload和body.onload事件实现,比如针对上面的错误例子,可以修改为:

<script type="text/javascript">
Window.onload=function()
{
  Document.getElementById("divMsg").innerHTML="<divstyle="\border:solid 2px #FF0000\">动态添加的图层</div>";
};
</script>

具体的实现方式还有很多,应用window.onload和body.onload是因为这两个事件都是在dom加载完成并且所有页面资源加载完成后才执行的,这是最简单的做法。或者根据"document.readyState"判断dom的状态,如果是"complete"则进行某些操作,jQuery的文档处理程序$(document).ready内部正是使用的此原理。

希望本文所述对大家jquery程序设计有所帮助。

Javascript 相关文章推荐
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
Jun 24 Javascript
JavaScript中exec函数用法实例分析
Jun 08 Javascript
在JavaScript中使用对数Math.log()方法的教程
Jun 15 Javascript
JavaScript编程学习技巧汇总
Feb 21 Javascript
JS触发服务器控件的单击事件(详解)
Aug 06 Javascript
ionic2 tabs 图标自定义实例
Mar 08 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
May 09 Javascript
JavaScript实现跟随滚动缓冲运动广告框
Jul 15 Javascript
Vue项目中跨域问题解决方案
Jun 05 Javascript
详解如何使用node.js的开发框架express创建一个web应用
Dec 20 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
Aug 23 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
Nov 14 Javascript
有关easyui-layout中的收缩层无法显示标题的解决办法
May 10 #Javascript
jQuery对象与DOM对象转换方法详解
May 10 #Javascript
jQuery对象的链式操作用法分析
May 10 #Javascript
JS组件Bootstrap按钮组与下拉按钮详解
May 10 #Javascript
Bootstrap按钮下拉菜单组件详解
May 10 #Javascript
JavaScript编写页面半透明遮罩效果的简单示例
May 09 #Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
May 09 #Javascript
You might like
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
Angular8基础应用之表单及其验证
2019/08/11 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
python判断windows隐藏文件的方法
2014/03/21 Python
举例讲解Python中的算数运算符的用法
2015/05/13 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
介绍一下JMS编程步骤
2015/09/22 面试题
秋季运动会通讯稿
2014/01/24 职场文书
三年级语文教学反思
2014/02/01 职场文书
差生评语大全
2014/05/04 职场文书
环保倡议书400字
2014/05/15 职场文书
生日庆典策划方案
2014/06/02 职场文书
英文演讲稿开场白
2014/08/25 职场文书
感恩老师演讲稿400字
2014/08/28 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
2014财务年终工作总结
2014/12/08 职场文书
运动会通讯稿50字
2015/07/20 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
学校运动会开幕词
2016/03/03 职场文书
nginx部署多前端项目的几种方法
2021/05/25 Servers
Python基础知识学习之类的继承
2021/05/31 Python