- jQuery从入门到精通 (软件开发视频大讲堂)
- 明日科技
- 1516字
- 2020-11-28 23:47:20
3.3 jQuery对象和DOM对象
3.3.1 jQuery对象和DOM对象简介
刚开始学习jQuery,经常分不清楚哪些是jQuery对象,哪些是DOM对象,因此,了解jQuery对象和DOM对象以及它们之间的关系是非常必要的。
1.DOM对象
DOM是Document Object Model,即文档对象模型的缩写。DOM是以层次结构组织的节点或信息片段的集合,每一份DOM都可以表示成一棵树。下面构建一个基本的网页,网页代码如下:
图3.7 一个非常基本的网页
<html> <head> <title>DOM对象</title> </head> <body> <h2>明日图书</h2> <p>《JavaScript从入门到精通》</p> </body> </html>
网页的初始化效果如图3.7所示。
可以把上面的HTML结构描述为一棵DOM树,如图3.8所示。
图3.8 把网页元素表示为DOM树
在这棵DOM树中,<h2>、<p>节点都是DOM元素的节点,可以使用JavaScript中的getElementById或getElementsByTagName来获取,得到的元素就是DOM对象。DOM对象可以使用JavaScript中的方法。例如:
var domObject = document.getElementById("id"); var html = domObject.innerHTML;
2.jQuery对象
jQuery对象就是通过jQuery包装DOM对象后产生的对象。jQuery对象是独有的,可以使用jQuery里的方法。例如:
$("#test").html(); //获取id为test的元素内的html代码
这段代码等同于:
document.getElementById("test").innerHTML;
虽然jQuery对象是包装DOM对象后产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里面的方法。比如:$("#test").innerHTML、document.getElementById("test").html()之类的写法都是错误的。
注意
用#id作为选择符取得的是jQuery对象,而使用document.getElementById("id")得到的是DOM对象,这两者并不是等价的。
3.3.2 jQuery对象和DOM对象的相互转换
既然jQuery对象和DOM对象有区别也有联系,那么jQuery对象与DOM对象也可以相互转换。在两者转换之前首先约定好定义变量的风格。如果获取的是jQuery对象,那么我们在变量前面加上$,例如:
var $obj = jQuery对象;
如果获取的是DOM对象,则与平时习惯的表示方法一样:
var obj = DOM对象;
注意
为便于读者阅读,本书中的实例都会以这样的方式呈现。这样约定只是便于讲解与区分,在实际应用中并不规定。
1.jQuery对象转换成DOM对象
jQuery提供了两种转换方式将一个jQuery对象转换成DOM对象:[index]和get(index)。
(1)jQuery对象是一个类似数组的对象,可以通过[index]的方法得到相应的DOM对象。例如:
var$mr=$("#mr"); //jQuery对象 var mr=$mr[0]; //DOM对象 alert(mr.value); //获取DOM元素的value的值并弹出
(2)jQuery本身也提供get(index)方法,可以得到相应的DOM对象。例如:
var$mr=$("#mr"); //jQuery对象 var mr=$mr.get(0); //DOM对象 alert(mr.value); //获取DOM元素的value的值并弹出
2.DOM对象转换成jQuery对象
对于一个DOM对象,只需要用$()把它包装起来,就可以得到一个jQuery对象了,即$(DOM对象)。例如:
var mr=document.getElementById("mr"); //DOM对象 var$mr=$(mr); //jQuery对象 alert($(mr).val()); //获取文本框的值并弹出
转换后,DOM对象就可以任意使用jQuery中的方法了。
通过以上方法,可以任意实现DOM对象和jQuery对象之间的转换。需要再次强调的是:DOM对象才能使用DOM中的方法,jQuery对象是不可以使用DOM中的方法的。
下面举两个简单的例子来加深对DOM对象和jQuery对象相互转换的理解。
【例3.2】DOM对象转换为jQuery对象。(实例位置:光盘\TM\sl\3\2)
(1)创建一个名称为js的文件夹,并将jquery-1.11.1.min.js复制到该文件夹中。
(2)创建一个名称为index.html的文件,在该文件的<head>标记中引用jQuery库文件,关键代码如下:
<script language="javascript" src="js/jquery-1.11.1.min.js"></script>
(3)编写jQuery代码,实现在页面载入完毕后,首先使用DOM对象的方法弹出p节点的内容,之后将DOM对象转换为jQuery对象,同样再弹出p节点的内容,具体代码如下:
<script> $(document).ready(function(){ var domObj = document.getElementById("testp"); alert("使用DOM方法获取p节点的内容:"+domObj.innerHTML); var $jqueryObj = $(domObj); alert("使用jQuery方法获取p节点的内容:"+$jqueryObj.html()); }) </script>
运行index.html,将弹出如图3.9所示的提示对话框。
图3.9 弹出的提示对话框
【例3.3】jQuery对象转换为DOM对象。(实例位置:光盘\TM\sl\3\3)
(1)创建一个名称为js的文件夹,并将jquery-1.11.1.min.js复制到该文件夹中。
(2)创建一个名称为index.html的文件,在该文件的<head>标记中引用jQuery库文件,关键代码如下:
<script language="javascript" src="js/jquery-1.11.1.min.js"></script>
(3)编写jQuery代码,实现在页面载入完毕后,首先获取2个jQuery对象,使用jQuery对象的方法分别弹出2个p节点的内容,之后分别使用[index]和get(index)的方法将jQuery对象转换为DOM对象,同样再弹出2次p节点的内容,具体代码如下:
<script> $(document).ready(function(){ var $jQueryObj = $("#testp"); alert("使用jQuery方法获取第一个p节点的内容:"+$jQueryObj.html()); var $jQueryObj1 = $("#testp1"); alert("使用jQuery方法获取第二个p节点的内容:"+$jQueryObj1.html()); var domObj = $jQueryObj[0]; alert("使用DOM方法获取第一个p节点的内容:"+domObj.innerHTML); var domObj1 = $jQueryObj1.get(0); alert("使用DOM方法获取第二个p节点的内容:"+domObj1.innerHTML); }) </script>
运行index.html,将弹出如图3.10所示的提示对话框。
图3.10 弹出的提示对话框