锋利的jQuery(三)-- jQuery中的DOM操作

DOM是 Document Object Model的缩写,意思是文档对象模型。根据 W3C DOM 规范(http://www.w3.org/DOM),DOM是一种与浏览器、平台、语言无关的接口,使用该接口可以轻松地访问页面中所有的标准组件。简单来说,DOM解决了Netscape的JavaScript和Microsoft的JScript之间的冲突,给予了 Web 设计师和开发者一套标准的方法,让他们能够轻松获取和操作网页中的数据、脚本和表现层对象。
3.1 DOM操作的分类
一般来说,DOM操作分为3个方面,即DOM Core(核心)、HTML-DOMCSS-DOM
1.DOM Core
DOM Core并不专属于JavaScript,任何一种支持DOM的程序设计语言都可以使用它。它的用途并非仅限于处理网页,也可以用来处理任何一种使用标记语言编写出来的文档,例如XML。
JavaScript 中的getElmentById()、getElementsByTagName()、getAttribute()setAttribute()等方法,这些都是DOM Core的组成部分。
例如:
使用DOM Core来获取表单对象的方法:

document.getElementsByTagName("form");

使用DOM Core来获取某元素的src属性的方法:

element.getAttribute("src");

2.HTML-DOM
在使用JavaScript和DOM为HTML文件编写脚本时,有许多专属于HTML-DOM的属性。HTML-DOM的出现甚至比DOM Core还要早,它提供了一些更简明的记号来描述各种HTML元素的属性。
例如:
使用HTML-DOM来获取表单对象的方法:

document.forms  //HTML-DOM提供了一个forms对象

使用HTML-DOM来获取某元素的src属性的方法:

element.src;

因此获取某些对象、属性既可以用DOM Core来实现,也可以使用HTML-DOM实现。相比较而言HTML-DOM的代码通常比较简短,不过它只能用来处理Web文档。
3.CSS-DOM
CSS-DOM是针对 CSS的操作。在JavaScript中,CSS-DOM技术的主要作用是获取和设置style对象的各种属性。通过改变style对象的各种属性,可以使网页呈现出各种不同的效果。
例如:

设置某元素style对象字体颜色的方法:

element.style.color = "red";

jQuery作为JavaScript库,继承并发扬了JavaScript对DOM对象的操作的特性,使开发人员能方便地操作DOM对象。下面详细介绍jQuery中的各种DOM操作。
3.2 jQuery中的DOM操作
下面我们构建一个网页。因为每一张网页都能用DOM表示出来,而每一份DOM都可以看作一棵DOM树。构建的网页效果如图

<p title="选择你最喜欢的水果." >你最喜欢的水果是?</p>
<ul>
      <li title='苹果'>苹果</li>
      <li title='橘子'>橘子</li>
      <li title='菠萝'>菠萝</li>
</ul>

根据上面的网页结构构建出一棵DOM树,如图

接下来,对DOM的各种操作都将围绕这棵DOM树而展开。
3.2.1 查找节点
1.查找元素节点
获取元素节点并打印出它的文本内容,jQuery代码如下:

var $li = $("ul li:eq(1)");         //获取<ul>里第2个<li>节点
var li_txt = $li.text();            //获取第2个<li>元素节点的文本内容
alert(li_txt);                      //打印文本内容

以上代码获取了<ul>元素里第2个<li>节点,并将它的文本内容“橘子”打印出来,效果如图
2.查找属性节点
利用 jQuery 选择器查找到需要的元素之后,就可以使用 attr()方法来获取它的各种属性的值。attr()方法的参数可以是一个,也可以是两个。当参数是一个时,则是要查询的属性的名字,例如:

var $para = $("p");                 //获取<p>节点
var p_txt = $para.attr("title");    //获取<p>元素节点属性title
//var p_txt = $para.text(); 效果同上条语句相同
alert(p_txt);                       //打印title属性值

以上代码获取了<p>节点,并将它的title属性的值打印出来,效果如图
3.2.2 创建节点
在DOM操作中,常常需要动态创建HTML内容,使文档在浏览器里的呈现效果发生变化,并且达到各种各样的人机交互的目的。
1.创建元素节点
例如要创建两个<li>元素节点,并且要把它们作为<ul>元素节点的子节点添加到DOM节点树上。
(1)创建两个<li>新元素。
(2)将这两个新元素插入文档中。
第(1)个步骤可以使用jQuery的工厂函数$()来完成:

var $li_1 = $("<li></li>");    //创建第1个<li>元素
var $li_2 = $("<li></li>");    //创建第2个<li>元素
$("ul").append($li_1);         //添加到<ul>节点中,使之能在网页中显示
$("ul").append($li_2);         //可以采取链式写法:$("ul").append($li_1).append ($li_2)

$(html)方法会根据传入的HTML标记字符串,创建一个DOM对象,并将这个DOM对象包装成一个jQuery对象后返回。

运行代码后,新创建的<li>元素将被添加到网页中,因为暂时没有在它们内部添加任何文本,所以只能看到<li>元素默认的“· ”,如图


2.创建文本节点


var $li_3 = $("<li>香蕉</li>");                    //创建一个<li>元素,包括元素节点和文本节点
                                                    //“香蕉”就是创建的文本节点
var $li_4 = $("<li>雪梨</li>");                    //创建一个<li>元素,包括元素节点和文本节点
                                                    //“雪梨”就是创建的文本节点。
$("ul").append($li_3);                             //添加到<ul>节点中,使之能在网页中显示
$("ul").append($li_4);                             //添加到<ul>节点中,使之能在网页中显示

效果如图:



注意:无论$(html)中的HTML代码多么复杂,都可以使用相同的方式来创建。例如$("<li><em>这是</em><b>一个</b>< a href='#' >复杂的组合</ a></li>");
3.创建属性节点
 

var $li_5 = $("<li title='香蕉'>香蕉</li>");        //创建一个<li>元素
                                                     //包括元素节点、文本节点和属性节点
                                                     //其中title='香蕉'就是创建的属性节点
var $li_6 = $("<li title='雪梨'>雪梨</li>");        //创建一个<li>元素
                                                     //包括元素节点、文本节点和属性节点
                                                     //其中title='雪梨'就是创建的属性节点
$("ul").append($li_5);
$("ul").append($li_6);                              //添加到<ul>节点中,使之能在网页中显示



上图创建文本节点的例子中新增的元素没有属性节点,创建属性节点的例子中新增的元素有title属性节点

3.2.3 插入节点

这些插入节点的方法不仅能将新创建的DOM元素插入到文档中,也能对原有的DOM元素进行移动。
例如利用它们创建新元素并对其进行插入操作:


var $li_1 = $("<li title='香蕉'>香蕉</li>");                                           
var $li_2 = $("<li title='雪梨'>雪梨</li>");   
var $li_3 = $("<li title='其他'>其他</li>");   
var $parent = $("ul");                        
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值