JQuery学习笔记(3)JQuery中的DOM操作

JQuery中的DOM操作

引子

       DOM: Document Object Model,文档对象模型,一种与浏览器、平台、语言无关的接口,使用该接口可以轻松地访问页面中所有的标准组件。

1DOM操作的分类

1.1 DOM Core(核心)

    适用任何适用标记语言编写出来的文档,如HTML、XML。

     JavaScript中的getElementId(), getElementsByTabName(),getAttribute()和setAttribute()等都是DOM Core的组成部分

1.2 HTML-DOM

    提供简明的记号来描述各种HTML元素的属性。    如:

     document.forms//

     element.src;//获取元素的src属性

1.3 CSS-DOM

    CSS-DOM是针对CSS的操作。在JavaScript中,CSS-DOM技术的主要作用是用来获取和设置style对象的各种属性。

2. JQuery中的DOM操作

         2.1 查找节点

                   -1. 查找元素节点

                            $(“ul li:eq(1)”);//获取ul下第2个li节点

                   -2.  查找属性节点

                            $(“p”).attr(“title”);//获取p节点的title属性

         2.2 创建节点

                   -1. 创建元素节点

                            //$(html)创建一个DOM对象,并包装成一个JQuery对象返回

                            var $liTag=$(“<li></li>”);                        

                            $(“ul”).append($liTag);//用append方法将新元素插入文档中

                   -2. 创建文本节点

                            var $liText=$(“<li>apple</li>”);

                            $(“ul”).append($liText);

                   -3. 创建属性节点—同文本节点一样,随元素节点一起创建

                            $(“<li title=’fruit’>apple</li>”)//


 

 

         2.3 插入节点

方法

描述

示例

A.append(B)

A的内部追加内容B

(追加到内容后部)

HTML:<p>Hello </p>

JQuery:

$(“p”).append(“<b>World</b>”)

Result:

<p>Hello <b>World</b></p>

A.appendTo(B)

将A追加到B的内容后面

HTML:<p>Hello </p>

JQuery:

$(“<b>World</b>”).appendTo(“p”)

Result:

<p>Hello <b>World</b></p>

A.prepend(B)

在A的内容前面追加B

HTML:<p>World</p>

JQuery:

$(“p”).prepend(“<b>Hello </b>”)

Result:

<p></b>Hello </b>World</p>

A.prependTo(B)

将A追加到B内容的前面

HTML:<p>World</p>

JQuery:

$(“<b>Hello </b>”).prependTo(“p”)

Result:

<p></b>Hello </b>World</p>

A.after(B)

在A元素后面插入B

HTML:<p>Hello </p>

JQuery:

$(“p”).after(“<b>World</b>”)

Result:

<p>Hello</p><b>World></b>

A.insertAfter(B)

将A插入到B元素的后面

HTML:<p>Hello </p>

JQuery:

$(“<b>World</b>”).insertAfter(“p”)

Result:

<p>Hello</p><b>World></b>

A.before(B)

在A元素的前面插入B

HTML:<b>World</b>

JQuery:

$(“b”).before(“<p>Hello </p>”)

Result:

<p>Hello</p><b>World></b>

A.insertBefore(B)

将A插入到B元素的前面

HTML:<b>World</b>

JQuery:

$(“<p>Hello </p>”).insertBefore(“b”)

Result:

<p>Hello</p><b>World></b>

 

         2.4 删除节点

                   -1. remove()方法

                            $(“ul li:eq(1)”).remove();//删除ul下的第2个li元素

                   当某个节点用remove()方法删除后,该节点所包含的所有后代节点都将被删除。这个方法的返回值是被删除节点的一个引用,因此,可以在后面再使用这些元素。

                            $(“ul li”).remove(“li[title=apple]”);//传递参数选择性删除元素

                   -2. empty()方法

                            empty采用的是清空节点,它能清空元素内容及其所有的后代节点。元素本身的标签依据存在,不是严格的删除节点。

         2.5 复制节点

                   -1. clone()方法

                            $("ul li").click(function(){

                                     $(this).clone().appendTo("div ul");

                            })//当点击ul下的li元素时,将其clone到div下的ul下。

                   -2. clone(true)方法

                            参数true表示复制该节点的同时也复制该节点绑定的事件。

         2.6 替换节点

                   -1. replaceWith()

                            将所有匹配的元素替换为指定的HTML元素或者DOM元素

                            $(“ul li:eq(1)”).replaceWith(“<li><b>no fruit</b></li>”);

                   -2. replaceAll()

                            作用同replaceWith(),位置颠倒

                            $("<li><b>no fruit</b></li>").replaceAll("li");

         2.7 包裹节点

                   即将某个节点用其他标记包裹起来

                   -1. wrap()每个节点单独包裹

                            $(“strong”).wrap(“<b></b>”);//用<b>把strong元素包裹起来

                            如果b元素有文本,则strong被包裹在文本后面

                   -2. wrapAll()所有节点一起包裹,如果要包裹的节点没有在一起,会被移动到一起

                            $("li").wrapAll("<b>Bold</b>")

                   -3. wrapInner()

                            将每一个匹配元素的子内容(包括文本节点)用其他结构化的标记包裹起来

                            $("ul li:odd").wrapInner("<b></b>")

         2.8 属性操作

                   -1. attr()方法获取和设置属性

                            $(“ul li:eq(1)”).attr(“title”);//获取属性

                            $(“ul li:eq(1)”).attr(“title”,”Your title”);//设置属性

                            $(“p”).attr({“title”:”your title”,”name”:”yourname”});设置多个属性

                   -2. removeAttr()方法删除属性

                            $(“p”).removeAttr(“title”);

         2.9 样式操作

                   -1. 获取样式和设置样式

                            class也是一种属性,因此获取和设置class都可以通过attr()来完成

                            $(“p”).attr(“class”);//获取p元素的class

                            $(“p”).attr(“class”,”myclass”);//设置p元素的class

                   -2. addClass()追加样式

                            $(“p”).addClass(“myClass”);//相当于上一步的两部操作

                   -3. removeClass()移除样式

                            $(“p”).removeClass(“myClass”);//移除myClass

                            $(“p”).removeClass();//移除所有class

                   -4. toggleClass()切换样式

                            如果类名存在则删除它,如果类名不存在则添加它。

                            $(“p”).toggleClass(“myClass”);

                   -5. hasClass()判断是否含有某个样式

                            if($(“p”).hasClass(“myClass”))//等价于$(“p”).is(“.myClass”)JQuery内部原理

         2.10 设置和获取HTML、文本和值

                   -1. html()方法 类似于JavaScript中的innerHTML属性,用来读取或设置某个元素的HTML内容,可用于XHTML,但不能用于XML

                            $(“p”).html();//

                            $(“p”).html(“<b>html content</b>”);

                   -2. text()方法 ≈JavaScript.innerText,用来读取或设置某个元素的文本内容

                            $(“p”).text();//

                            $(“p”).text(“Hello world!”);

                            Note:1) JavaScript.innerText不支持FireFox;

                                      2) text()对XHTML和XML文档都有效

                   -3. val()方法 ≈JavaScript.value,用来设置和获取元素的值

                            $(“#address”).val();//获取value值

                            $(“#address”).val(“tiangjingchen@gmail.com”);//设置value值

 

         2.11 遍历节点

                   -1. children()方法,取得匹配元素的子元素集合。

                            $(“p”).children();//children只考虑子元素而不考虑后代元素

                   -2. next()方法,取得匹配元素后面紧邻的同辈元素

                            $(“p”).next();//取得的元素包括其后代元素

                   -3. prev()方法,取得匹配元素前面紧邻的同辈元素

                            $(“ul”).prev();

                   -4. siblings()方法,取得匹配元素前后的同辈元素

                            $(“ul”).siblings();

                   -5. closest()方法,取得最近的匹配元素

         2.11 CSS-DOM操作

                   即读取和设置style的各种属性。style属性很有用,但最大不足是无法通过它来提取到通过外部CSS设置的样式信息。通过JQuery却可以轻而易举的获取到。

                  -1. css()方法,获取和设置元素的属性

                            $(“p”).css();//获取p元素的属性

                            $(“p”).css(“color”,”red”);//设置p元素的样式颜色为红色

                            $(“p”).css({“fontSize”:”30px”,”backgroundColor”:”blue”});//设置多个属性值

                            Note:1). 如果值是数字,则自动转为像素值;

                                      2). css()方法中,如果属性中带有”-”符号,如font-size,background-color,如果设置这些属性值的时候不带引号,则要用驼峰式写法,如:

                            $(“p”).css(“fontSize”,”30px”);

如果带上引号,既可以写成”font-size”,也可以写成”fontSize”,建议带引号

                            $(“p”).css(“opacity”,”0.5”);//设置透明度

                   -2. height & width

                            //取得匹配元素的高度值(px)(类似$(“p”).css(“height”),但css与样式有关)

                            $(“p”).height();     

                            $(“p”).width();

                            $(“p”).height(100);//设置高度为100px

                            $(“p”).width(“10em”);//设置宽度为10em

                   -3. offset()方法

                            获取元素在当前视窗的相对偏移,返回对象包含top和left两个属性。只对可见元素有效

                            var offset = $(“p”).offset();

                            var top = offset.top;

                            var left = offset.left;

                   -4. position()方法

                            获取元素相对于最近一个position样式设置为relative或absolute的祖父节点的偏移,返回对象包含top和left属性。

                   -5. scrollTop()方法和scrollLeft()方法

                            获取元素的滚动条距顶端的距离和距左侧的距离。
原文地址:https://www.cnblogs.com/tian2010/p/2016609.html