锋利的jQuery--第三章 jQuery中的DOM操作 【读书笔记】

#锋利的jQuery   
##jQuery中的DOM操作   
DOM是Document Object Model的缩写,意思是文档对象模型。根据W3C DOM规范,DOM是一种与浏览器、平台、语言无关的接口,使用该接口可以轻松地访问页面中的所以标准组件。   
###3.1 DOM操作的分类   
DOM操作可以分为3个方面,即DOM Core(核心)、HTML-DOM和CSS-DOM。   
####1. DOM Core   
DOM Core并不专属于JavaScript,任何一种支持DOM的程序设计语言都可以使用它,它的用途并非仅限于处理网页,也可以用来处理任何一种使用标记语言写出来的文档,例如XML。   
JavaScript中的getElementByI的()、getElementsByTagName()、getAttribute()等方法都是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的操作。   
例如:设置某元素style对象字体颜色的方法:   
    element.style.color="red";
 
###3.2 jQuery中的DOM操作   
 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml/DTD/xhtml-transitional.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>dom</title>
    </head>
    <body>
    <p title="选择你喜欢的水果。">你最喜欢的水果是?</p>
    <ul>
    <li title="苹果">苹果</title>
    <li title="橘子">橘子</title>
    <li title="菠萝">菠萝</title>
    </ul>
    </html>
 
####3.2.1 查找节点
* 1. 查找元素节点
    var $li = $("ul li:eq(1)");   
    var li_txt = $li.text();
    alert(li_txt);
* 2. 查找属性节点   
利用jQuery选择器查找到元素后,就可以使用attr()方法获取它的各种属性的值。
 
    var $para = $("p");
    var p_txt = $para.attr("title");
    alert(p_txt);
 
###3.2.2 创建节点   
* 1. 创建元素节点   
(1) 创建两个<li>新元素。   
(2) 将这两个新元素插入文档中。   
 $(html) 方法会根据传入的HTML标记字符串,创建一个DOM对象,并将这个DOM对象包装成一个jQuery对象后返回。   
     var $li_1 = $("<li></li>");
     var $li_2 = $("<li></li>");
     $("ul").append($li_1);
     $("ul").append($li_2);//可以采取链式写法:$("ul").append($li_1).append($li_2);   
 
 * 2. 创建文本节点   
     var $li_1 = $("<li>香蕉</li>");//创建一个<li>元素,包括元素节点和文本节点“香蕉”
     var $li_2 = $("<li>雪梨</li>");
     $("ul").append($li_1);
     $("ul").append($li_2);
 
 * 3. 创建属性节点   
     var $li_1 = $("<li title='香蕉'>香蕉</li>"); //title='香蕉'就是创建的属性节点
     var $li_2 = $("<li title='雪梨'>雪梨</li>");
     $("ul").append($li_1);
     $("ul").append($li_2);
 
 * 3.2.3 插入节点   
 表3-1 插入节点的方法   
 方法           描述       
 append()       向每个匹配的元素内容追加内容。
 appendTo()     将所以匹配的元素追加到指定的元素中。
 prepend()      向每个匹配的元素内容内部前置内容。
 prependTo()    将所有匹配的元素前置到指定的元素中。
 after()        在每个匹配的元素之后插入内容
 insertAfter()  将所有匹配的元素插入到指定元素后面。
 before()       在每个匹配的元素之前插入内容
 insertBefore() 将所有匹配的元素插入到指定的元素前面
   
     var $li_1 = $("<li title='香蕉'>香蕉</li>");
     var $li_2 = $("<li title='雪梨'>雪梨</li>");
     var $li_3 = $("<li title='其它'>其它</li>");
     var $parent = $("ul");
     var $two_li = $("ul li:eq(1)");
     $parent.append($li_1);
     $parent.prepend($li_2);
     $li_3.insertAfter($two_li);
 
     var $one_li = $("ul li:eq(1)");
     var $two_li = $("ul li:eq(2)");
     $two_li.insertBefore($one_li);
 
###3.2.4 删除节点   
jQuery提供了两种删除节点的方法,即remove()和empty()。
* 1. remove()方法   
作用是从DOM中删除所有匹配的元素,传入的参数用于根据jQuery表达式来筛选元素。   
    $("ul li:eq(1)").remove();
 
当某个节点用remove()方法删除后,该节点所包含的所有后代节点将同时被删除。这个方法的返回值是一个指向已被删除的节点的引用,因此可以在以后再使用这些元素。
    var $li = $("ul li:eq(1)").remove();
    $li.appendTo("ul");//把刚才删除的节点又重新添加到<ul>元素里
 
remove()方法也可以通过传递参数来选择性地删除元素,jQuery代码如下:   
    $("ul li").remove("li[title!=菠萝]");
 
* 2. empty()方法   
empty方法并不是删除节点而是清空节点,它能清空元素中的所有后代节点。   
 
###3.2.5 复制节点   
    $("ul li").click(function(){
        $(this).clone.appendTo("ul");//复制当前单击的节点并将其追加到<ul>元素中
    })   
复制节点后,被复制的新元素并不具有任何行为。如果需要新元素也具有复制功能(本例是单击事件),可以:
    $(this).clone(true).appendTo("body");//注意参数true
在clone()方法中传递了一个参数true,它的含义是复制元素的同时复制元素所绑定的事件。因此钙元素的副本也同样具有复制功能。   
 
###3.2.6 替换节点   
要替换某个节点,jQuery提供了相应的方法,即replaceWith()和replaceAll().
    $("p").replaceWith("<strong>你最不喜欢的水果是?</strong>");   
replaceAll()方法与replaceWith()相同,只是颠倒了replaceWith()操作。如:
    $("<strong>你最不喜欢的水果是?</strong>").replaceAll("p");   
 
如果在替换之前,已经为元素绑定事件,替换后原先绑定的事件将会与被替换的元素一起消失,需要在新元素上重新绑定事件。   
 
###3.2.7 包裹节点   

转载于:https://my.oschina.net/LosersAFC/blog/204485

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值