jQuery中的DOM操作

纵然是瞬间 提交于 2019-12-31 14:13:07

一、DOM的概念

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

二、DOM操作的分类

1.DOM Core (核心)

定义了一套标准的针对任何结构化文档的对象,包括HTML、XHTML和XML

例如JavaScript中的getELementById()、getElementByTagName()、getAttribute()、setAttribute()

2.HTML-DOM

定义了一套标准的针对XML文档的对象

例如.src()等

3.CSS-DOM

定义了一套标准的针对XHTML文档的对象

例如.style.color()等

三、jQuery中的DOM操作

01.查找节点

元素节点:构成了DOM的基础。文档结构中,<html>是根元素,代表整个文档,其他的还有<head>,<body><ul>,<li>等等。元素节点之间可以相互包含(当然遵循一定的规则)

属性节点:元素都可以包含一些属性,属性的作用是对元素做出更具体的描述,比如id,name之类的。

查找元素节点

查找属性节点

02.创建节点

创建元素节点

var $li = $("<li></li>");    //创建一个<li>元素;注意事项一
$("ul").append($li);            //添加到<ul>节点中去;注意事项二

注意事项一:创建单个元素时,要注意闭合回路和使用标准的XHTML格式。

注意事项二:动态创建的新元素节点不会自动添加到文档中去,而是需要使用其他方式将其插入到文档中,如append

创建文本节点

var $li = $("<li>雪梨</li>");    //创建一个<li>元素和“雪梨”文本节点;
$("ul").append($li);            //添加到<ul>节点中去;

创建属性节点

var $li = $("<li title="雪梨">雪梨</li>");    //创建一个<li>元素、“雪梨”文本节点和“title”属性节点;注意事项三
$("ul").append($li);            //添加到<ul>节点中去;

注意事项三:是否创建属性节点的区别在于虽然网页显示一致,但是查看源码创建了属性节点的代码会有title这个属性节点

03.插入节点

append

<p>我想说:</P>                       //HTML代码
$("p").append("<b>你好</b>");        //jquery代码
<p>我想说:</b>你好<b></p>            //结果

appendTo

<p>我想说:</P>                             //HTML代码
$("<b>你好</b>").appendTo("p");        //jquery代码
<p>我想说:</b>你好<b></p>            //结果

<p></p>与<b></b>结果<p><b></b></p>

append()与appendTo():想匹配的元素后置内容 

prepend()与prependTo():向匹配的元素前置内容

<p></p>与<b></b>结果<p></p><b></b>

after()与insertAfter():向匹配的元素之后插入内容内容

before()与insertBefore():在匹配的元素之前插入内容

04.删除节点

 

remove()

detach()

empty()

作用原理

节点包含的所有后代节点将同时被删除

同remove(),但不会把匹配的元素从jQuery对象删除

并非删除节点而是清空元素中所有后代节点

删后事件及数据

不能

-

删后元素本身恢复


05.复制节点
 

clone():

$("ul li").click(function(){
     $(this).clone().appendTo("ul");   //复制当前单击的节点,并将它追加到<ul>元素中,但新元素布局有原来的事件
})

clone(ture):

$("ul li").click(function(){
     $(this).clone(ture).appendTo("ul");   //复制当前单击的节点,并将它追加到<ul>元素中,同时新元素具有以前的事件
})

06.替换节点

replaceWith()与replaceAll()

$("p").replaceWith("<strong>不喜欢的水果</strong>");    //replaceAith()
$("<strong>不喜欢的水果</strong>").replaceAll("p");     //replaceAll()
//替换前元素已经绑定了时间,替换后元素失去绑定的事件

07.包裹节点

08.属性操作

(1) 获取和设置属性

单个属性

$("p").attr("title","your title");    //将title换成your title

多个属性

$("p").attr("title":"your title", "name":"test");    //将title换成your title,name 换成test

既能设置属性的值,又能获取元素的值:attr(),html(),text(),heigth(),width(),val(),css()

(2) 删除属性

removeAttr()

jQuery1.6以后 新增了prop(),removeProp()

09.样式操作

(1) 获取样式和设置样式

(2) 追加样式

 

方法

aadClass()

attr()

用途

追加样式

设置样式

对同一个网页元素操作

<p>test</p>

<p>test</p>

第一次使用方法

$(“p”).aadClass(“high”);

$(“p”).attr(“class”,”high”);

第一次结果

<p class=”high”>test</p>

<p class=”high”>test</p>

再次使用方法

$(“p”).aadClass(“another”);

$(“p”).attr(“class”,” another”);

最终结果

<p class=”high another”>test</p>

<p class=”another”>test</p>

 

(3) 移除样式

$("p").removeClass("high");                    //移除class中的high 
$("p").removeClass("high another");            //移除class中的high another 
$("p").removeClass();                          //移除class中的全部值

(4) 切换样式

$Btn.toggle(function(){    //点击切换隐藏显示//显示的元素 },function(){
 //隐藏的元素})$("p").toggle("another")   //点击切换class有无another

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

$("p").hasClass("another");    //判断p元素是否含有为another的class

10.设置和获取HTML、文本和值

html() :只能用于XHTML文档

val() :还可以使select、checkbox、radio相应的选项被选中

 

<select id="sel">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
</select>
<input type="checbox" value="v1"/>1
<input type="checbox" value="v2"/>2
<input type="checbox" value="v3"/>3
<input type="checbox" value="v4"/>4
<input type="checbox" value="v5"/>5
<input type="radio" value="r1"/>1
<input type="radio" value="r2"/>2

$("#sel").val("2");               //改变默认选项
$("#sel").val(["2","3"]);         //使2,3被选中
$(":checkbox").val(["v2","v4"]);  //2,4被选中
$(":radio").val(["r2"]);          //2被选中

 

text():HTML、XML有效

11.遍历节点

children():只找自己下一层的元素

closest():向上找一个

parent():向上找一个,不包含自身

parents():向上找到找不到为止

12.CSS-DOM操作

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!