七、JS07使用 jQuery 操作 DOM

news2024/12/23 15:01:41

七、使用 jQuery 操作 DOM

7.1 DOM 操作

7.1.1 DOM 操作分类

  • 使用 JavaScript 操作 DOM 时分为三类——DOM Core(核心)、HTML-DOM 和 CSS-DOM
  • jQuery 操作也同样分为这三类
  • 下面主要回顾以下 JavaScript 中的 DOM 操作

JavaScript 中的 getElementById()、getElementByTagName() 等方法都是 DOM Core 的组成部分

HTML-DOM 主要用于标记 HTML 元素,例如 document.getElementById(“intro”).innerHTML

CSS-DOM 主要作用是获取和设置 style 对象的各种属性

###7.1.2 jQuery 中的 DOM 操作

  • jQuery 中的 DOM 操作主要分为 样式操作、文本和 value 属性值操作、节点操作
  • 节点操作有包含属性操作、节点遍历和 CSS-DOM 操作

jQuery 中的 DOM 操作

jQuery 中的 DOM 操作

7.2 样式操作

jQuery 不仅对 CSS 样式有着良好的支持,而且对浏览器也有着良好的兼容性

jQuery 中,对元素样式的操作主要有

  • 直接设置样式值
  • 获取样式值
  • 追加样式
  • 移除样式
  • 切换样式

7.2.1 设置和获取样式值

1.设置样式值

  • jQuery 中,使用 css() 方法为指定的元素设置样式值
  • 设置样式语法
$(selector).css(name,value);	//设置单个属性
$(selector).css({name1:value1,name2:value2,name3:value3,....})		//同时设置多个属性
  • css() 方法参数说明
参数描述
name必须。规定 CSS 属性的名称。该参数可以是任何 CSS 属性
例如,color,background 等
value必须。规定 CSS 属性的值。该参数可以是任何 CSS 属性值
例如,#000000、24px 等

2、获取样式值

  • 如果使用 css() 方法,如果参数只填写属性名,则是获取元素样式的属性值
  • 获取样式属性值 语法
$(selector).css(name) //获取属性

7.2.2 追加样式和移除样式

1、追加样式

  • 使用 addClass() 方法可以为元素追加类样式(及 CSS 当中定义好的样式)
  • 追加样式语法
$(selector).addClass(class);	//添加单个类样式
$(selector).addClass(class1 class2 class3 ....); 	//添加多个类样式
  • class 为类样式名称
  • 可以同时增加多个类样式,中间用空格隔开

2、移除样式

  • jQuery 中,移除样式使用 removeClass() 方法
  • 移除样式语法
$(selector).removeClass(class);	//移除单个类样式
$(selector).removeClass(class1 class2 class3);  //移除多个类样式
$(selector).removeClass();		//移除所有类样式
  • 参数 class 为类样式名称,可以同时添加多个类样式
  • 提供没有参数时,则代表移除该元素的所有类样式

7.2.3 切换样式

  • 使用 toggleClass() 方法可以切换不同元素的类样式
  • toggleClass() 方法是在元素的类样式和切换前的样式间不断切换
  • 切换样式语法
$(selector).toggleClass(class);
  • 将元素的样式切换为 名为 class 的 CSS 类样式
  • 当元素中还有名为 class 的 CSS 类样式时,使用 toggleClass() 方法则会删除该样式

7.2.4 判断是否含指定的样式

  • 判断样式是否含有使用 hasClass() 方法
  • 判断样式是否含有 语法
$(selector).hasClass(class);
  • class 为类样式名,该名称必选,指定元素中查找的类名
  • 返回值为布尔型,如果包含查找的类,则返回 true,否则返回 false

7.3 内容操作

jQuery 还提供了对元素内容操作的方法

即对 HTML 代码中,标签、标签内容和属性值内容三者的操作

7.3.1 HTML 代码操作

  • 使用 html() 方法可以对 HTML 代码进行操作,返回或设置被选元素的内容
  • html() 语法格式如下
html([content]);
  • content 参数为可选项,当有参数时,用于规定备选元素中的内容
  • 无参时表示获取被选元素的文本内容

7.3.2 标签内容操作

  • jQuery 中,可以使用 text() 方法获取或设置元素的文本内容,不包含 HTML 标签
  • text() 语法格式如下
text([content]);
  • content 参数为可选项,当有参时,设置元素新的文本内容,特殊字符会被编码
  • 无参时,表示获取被选元素的文本内容

7.3.3 html() 方法和 text() 方法的区别

  • html() 方法仅支持 HTML文档,不能用于 XML 文档
  • text() 方法既支持 HTML 文档,也支持 XML 文档
  • html() 方法设置元素内容时,可以写入标签,写入的标签会生效
  • text() 方法设置元素内容时,写入的标签并不会生效
  • html()方法 和 text() 方法的区别
语法格式参数说明功能描述
html( )无参数用于获取第一个匹配元素的 HTML 内容或文本内容
html(content)content 为元素的 HTML 内容用于设置所有匹配元素的 HTML 内容或文本内容
text( )无参数用于获取所有匹配元素的文本内容
text (content)content 为元素的文本内容用于设置所有匹配元素的文本内容

7.3.4 属性值操作

  • jQuery 中,获取或设置元素的 value 属性值,使用方法 val()
  • val() 语法
val([value]);
  • 当 val() 方法 有参数 value 时,表示为被选元素设置新的 value 值
  • 当没有参数时,则表示获取元素的 value 值

7.4 节点操作

jQuery 中,节点操作主要分为查找、创建、插入、删除、替换和复制六种操作

其中,查找,创建,插入,删除和替换节点是日常开发中使用最多的

7.4.1 查找节点

  • 要想对节点进行操作,即增、删、改、首先必须找到要操作的元素
  • 获取元素,可以使用 jQuery 选择器
  • 查找节点语法
$("选择器");
  • 前文已经大致讲解过了,这里不再过多赘述了

7.4.2 创建节点元素

  • 创建节点元素一般使用 $() 工厂函数
  • $() 工厂函数有多种用法,可以用来查找节点,也可以创建节点
  • $() 语法格式如下
$(selector);
$(element);
$(html);
  • $() 参数说明
参数描述
selector选择器。使用 jQuery 选择器匹配元素
elementDOM 元素。以 DOM 元素来创建 jQuery 对象
htmlHTML 代码。使用 HTML 字符串创建 jQuery 对象
  • 以下主要讲解 $(html) 创建元素
  • 使用 $(html) 创建两个新的 <li> 元素节点 示例
var $newNode=$("<li></li>");		//空<li>
var $newNode=$("<li>你喜欢兰巧儿吗?</li>");	//含文本<li>
var $newNode=$("<li title='last'>你喜欢兰巧儿吗?</li>");  //含属性<li>
  • 但这仅仅只是创建好了一个新的元素,并没有将元素添加到 DOM 文档中
  • 要将元素添加到 DOM 文档中,就要使用 插入节点

7.4.3 插入节点

  • jQuery 中,想要实现动态的新增节点,必须对创建的节点执行插入或追加操作
  • 节点的插入主要分为两大类:内部插入节点和外部插入节点
  • 插入节点的主要方法
插入方式方法描述
内部插入append(content)向所选择的元素内部插入内容
$(A).append(B) 表示将 B追加到 A 的子元素集合末尾中
内部插入appendTo(content)把所选择的元素追加到另一个指定的元素集合中
$(A).appendTo(B) 表示把 A 追加到 B 的子元素集合末尾中
内部插入prepend(content)向每个选择的元素内部前置内容
$(A).prepend(B) 表示把 B 插入到 A 的子元素集合的开头
内部插入prependTo(content)将所有匹配元素前置到指定的元素中
$(A).prependTo(B) 表示将 A元素插入到 B 的子元素集合的开头
外部插入after(content)在每个匹配的元素之后插入内容
$(A).after(B) 表示将 B 插入到 A 之后
外部插入insertAfter(content)将所有匹配元素插入到指定元素的后面
$(A).insertAfter(B) 表示将 A 插入 B 之后
外部插入before(content)向所选择的元素外部前面插入内容
$(A).before(B) 表示将 B 插入到 A 之前
外部插入insertBefore(content)将所匹配的元素插入指定元素的后面
$(A).before(B) 表示将 A 插入到 B之前
  • 示例 向 ul 内插入节点
//向ul的子元素中的最后一位 插入节点 $newNode1
$("ul").append($newNode1);
$($newNode1).appendTo("ul");
//向 ul的子元素的第一位 插入节点 $newNode2
$("ul").prepend($newNode2);
$($newNode2).prependTo("ul");

7.4.4 删除节点

  • jQuery 中,删除节点提供了三种方法:remove()、detach()、empty() 三种三处节点方式
  • 三种删除节点方法
方法名描述
remove()删除整个节点
detach()删除节点,但是保留节点的点击时间
empty()删除节点之间的内容
  • 三种删除节点 语法
$(selector).reomve([expr]);
$(selector).detach();
$(selector).empty();
  • remove() 方法的参数 expr 为可选项,如果接受参数,表示对所选的节点进行过滤
  • 例如
$("p").remove(".italic"); //表示删除所选 p 标签中有 .italic 类样式的节点

7.4.5 替换节点

  • jQuery 中替换节点可以使用 replaceWith() 方法和 replaceAll() 方法
方法名描述
replaceWith()将所有匹配的元素都替换为指定的 HTML 或者 DOM 元素
replaceAll()把被选元素替换为新的 HTML 元素
  • replaceWith() 方法示例
var $newNode1=$("<li>兰巧儿</li>");
$("ul li:eq(2)").replaceWith($newNode1);
  • 将所匹配的元素替换为 $newNode1
  • replaceWith() 方法和 replaceAll() 方法就类似于 append() 方法和 appendTo() 方法

7.4.6 复制节点

  • jQuery 中,若要对节点进行复制,则可以使用 clone() 方法
  • clone() 方法可以负责被选元素的子节点,文本和属性
  • clone() 语法格式
$(selector).clone([includeEvents]);
  • includeEvents 为可选项,为布尔值 true 和 false,表示是否复制该节点的事件,true表示复制
  • 复制元素 示例
$(ul li:eq(2)).clone(true).appendTo("ul");

7.5 属性操作

jQuery 提供了属性节点的操作方法

属性节点的操作方法有两种:获取与设置元素属性 和删除元素属性

设置和获取元素属性:attr()

删除元素属性:removeAttr()

7.5.1 获取与设置元素属性

  • jQuery 中,使用 attr() 方法来获取与设置元素属性
  • attr() 语法
$(selector).attr([name]);		//获取属性值
$(selector).attr([name]:[value]);	//设置属性值
$(selector).attr({[name1]:[value1],[name2]:[value2],...});	//设置多个属性值
  • 参数 name 表示属性名称,value 表示属性值

7.5.2 删除元素属性

  • jQuery 中,删除元素的属性使用方法:removeAttr() 方法
  • removeAttr() 方法语法:
$(selector).removeAttr(name);
  • name 参数为要删除的属性名称

7.6 节点遍历

jQuery 中,可以通过已获取到的元素,选取与其相邻的兄弟元素,祖先元素等进行操作

jQuery 中提供了遍历子元素,遍历同辈元素,遍历前辈元素和一些特别的遍历方法

即 children()、next()、prev()、siblings()、parent()、parents() 等

7.6.1 遍历子元素

  • jQuery 中,遍历子元素使用 children() 方法,获取元素的所有子元素
  • children() 方法语法
$(selector).children([expr])
  • 参数 expr 为可选项,用于过滤子元素的表达式

7.6.2 遍历同辈元素

  • 遍历同辈元素的方法有三种:next()、prev()、siblings()
  • 遍历同辈元素的三种方法的主要用法
方法名描述示例
next([expr])用于获取紧邻匹配元素之后的元素
参数 expr 可选
用于过滤同辈元素的表达式
$(“li:eq(1)”).next().addClass(“orang”);
prev([expr])用于获取紧邻匹配元素之前的元素
参数 expr 可选
用于过滤同辈元素的表达式
$(“li:eq(1)”).prev().addClass(“orang”);
siblings([expr])用于获取位于匹配元素前面和后面的所有同辈元素
参数 expr 可选
用于过滤同辈元素的表达式
$(“li:eq(1)”).siblings().addClass(“orang”);

7.6.3 遍历前辈元素

  • jQuery 中,用于遍历前辈元素的方法有 parent() 和 parents()
  • 前辈元素的主要用法
方法名描述
parent([selector])参数可选。规定缩小搜索父元素范围的选择器表达式
获取当前匹配元素集合中每个元素的父级元素
parents([selector])参数可选。规定缩小搜索祖先元素范围的选择器表达式
获取当前匹配元素集合中每个元素的祖先元素

7.6.4 其他遍历方法

jQuery 中有许多遍历方法,如 each()、end()、find()、first()、last() 等许多方法,这里主要介绍 each() 和 end()

1、each() 方法

  • each 方法规定每个匹配元素规定运行的函数
  • each() 语法格式
$(selector).each(function(index,element));
  • each() 方法示例
$("li").each(function() {
    var str=$(this).text()+"<br>";
    $("section").append(str);
});
//将每个 li 的内容提取出来,添加换行
//添加到 section 容器标签中

2、end() 方法

  • end() 方法用于结束当前链条中最近的筛选操作,并将匹配元素集还原为之前的状态
  • 示例
$('ul.first').find('.foo').css('background-color', 'red')
  .end().find('.bar').css('background-color', 'green');

当使用 find() 方法,找到 ul 当中的类样式为 .foo 的,现在选择的节点为 应用了 .foo的类样式


- **each() 方法示例**

~~~javascript
$("li").each(function() {
    var str=$(this).text()+"<br>";
    $("section").append(str);
});
//将每个 li 的内容提取出来,添加换行
//添加到 section 容器标签中

2、end() 方法

  • end() 方法用于结束当前链条中最近的筛选操作,并将匹配元素集还原为之前的状态
  • 示例
$('ul.first').find('.foo').css('background-color', 'red')
  .end().find('.bar').css('background-color', 'green');

当使用 find() 方法,找到 ul 当中的类样式为 .foo 的,现在选择的节点为 应用了 .foo的类样式

当使用 end() 方法后,又还原为了原来的 ul.first 节点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/445617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++内联函数inline

目录 内联函数的概念&#xff1a; 内联函数的用法&#xff1a; 内联的优点&#xff1a; 内联的缺点&#xff1a; 内联的使用场景 内联注意事项&#xff1a; 内联函数的概念&#xff1a; C中内联&#xff08;inline&#xff09;是一种关键字&#xff0c;用于告诉编译器把函…

以太网和DNS

以太网 数据链路层考虑的是相邻俩个节点之间的传输(通过网线/光纤/无线直接相连的设备),数据链路层中最典型的协议就说"以太网" 以太网协议规定了数据链路层,也规定了物理层的内容,我们使用的网线,也叫做"以太网线"(遵守以太网协议的网线) 以太网帧格式…

使用RecyclerView开发TabView

github链接 demo代码 效果图 这个功能是使用RecyclerView开发的&#xff0c;需要解决下面这些问题 单个item滚动的问题&#xff1a;左边的view需要固定、手指松开之后&#xff0c;惯性的处理滑动布局子View事件分发冲突的解决多个item联合滚动滚动header解决itemView与Recycl…

【MYSQL】表的增删改查(进阶)

文章目录 &#x1f337; 1. 数据库约束⭐ 1.1 约束类型⭐ 1.2 NULL约束⭐ 1.3 UNIQUE&#xff1a;唯一约束⭐ 1.4 DEFAULT&#xff1a;默认值约束⭐ 1.5 PRIMARY KEY&#xff1a;主键约束⭐ 1.6 FOREIGN KEY&#xff1a;外键约束⭐ 1.7 CHECK约束&#xff08;了解&#xff09; …

实在智能创意沙画引爆第25届“海博会”,数字员工为电商超自动化转型加“数”

4月18日&#xff0c;由中国纺织工业联合会、中国服装协会、中国服装设计师协会、台湾纺织业拓展会主办&#xff0c;石狮市人民政府指导的第二十五届海峡两岸纺织服装博览会暨科技成果交易会&#xff08;下称“海博会”&#xff09;在石狮市举行。本届海博会以“融合创新、共享时…

Android Jetpack 应用指南 - Navigation

前言 在Android开发的过去几年中&#xff0c;在公司的项目中一直没有机会尝试单Activity多Fragment的开发模式&#xff0c;随着Google推出Navigation组件&#xff0c;我意识到&#xff0c;终于有机会学习一种全新的开发模式了。 与上一篇文章相同&#xff0c;本篇同样是Navig…

Lenovo IdeaPad S540-14IML 电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件型号驱动情况 主板Lenovo IdeaPad S540-14IML 2019 (Type 81NF) 处理器Intel Core i5-10210U / i7-10510U已驱动 内存Internal 4GB 2666 Changeable 8GB 2666 memo…

Android进程间通信

在操作系统中&#xff0c;每个进程都有一块独立的内存空间。为了保证程序的的安全性&#xff0c;操作系统都会有一套严格的安全机制来禁止进程间的非法访问&#xff0c;但是&#xff0c;很多情况下进程间也是需要相互通信的 进程间通信&#xff08;Inter-process communication…

嵌入式学习笔记——SPI通信的应用

SPI通信的应用 前言屏幕分类1.3OLED概述驱动芯片框图原理图通信时序显示的方式页地址、列地址初始化指令 程序设计初始化代码初始化写数据与写命令清屏函数 初始化代码字符显示函数 总结 前言 上一篇中介绍了STM32的SPI通信&#xff0c;并根据框图和寄存器进行了SPI通信的初始…

轻松掌握k8s(使用docker)安装知识点

1、介绍 kubernetes具有以下特性&#xff1a; 服务发现和负载均衡 Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器&#xff0c;如果进入容器的流量很大&#xff0c; Kubernetes 可以负载均衡并分配网络流量&#xff0c;从而使部署稳定。存储编排 Kubernetes 允许你自…

【数据库】— 无损连接、Chase算法、保持函数依赖

【数据库】— 无损连接、Chase算法 Chase算法Chase算法举例一种简便方法&#xff1a;分解为两个模式时无损连接和函数依赖的一个简单例子 Chase算法 形式化定义&#xff1a; 构造一个 k k k行 n n n列的表格&#xff0c;每行对应一个模式 R i ( 1 ≤ i ≤ k ) Ri (1≤i ≤ k)…

计算机组成原理汇总

提示&#xff1a;日落归山海&#xff0c;山海藏深情 文章目录 1.1 计算机的发展1.2 计算机硬件的基本组成1.3 计算机的性能指标2.1.1 进位计数制2.1.2 BCD码2.1.3 无符号整数的表示和运算2.1.4 带符号整数的表示和运算(原反补)2.1.5原反补码的特性对比2.1.6 移码2.1.7 定点小数…

【逗老师的无线电】骚活,GPS热点盒子自动上报APRS位置

逗老师最近整了个有意思的小活&#xff0c;组装了一个有4G网卡带GPS功能的热点盒子&#xff0c;让盒子基于GPS位置信息&#xff0c;自动上报APRS位置帧 全篇亮点 基于GPS和AGPS共同定位基于TCP直接上报APRS数据帧 别说&#xff0c;这小活整完之后&#xff0c;还是有点意思的&…

linux coredump

文章目录 是什么生成原理coredump 的“危害” reference: 一文读懂Coredump文件是如何生成的 GDB是什么&#xff1f; 是什么 简单的讲&#xff1a;当进程接收到某些信号而导致异常退出时&#xff0c;就会生成 coredump 文件 在程序发生某些错误而导致进程异常退出时&#x…

技术分析内核并发消杀器(KCSAN)一文解决!

一、KCSAN介绍 KCSAN(Kernel Concurrency Sanitizer)是一种动态竞态检测器&#xff0c;它依赖于编译时插装&#xff0c;并使用基于观察点的采样方法来检测竞态&#xff0c;其主要目的是检测数据竞争。 KCSAN是一种检测LKMM(Linux内核内存一致性模型)定义的数据竞争(data race…

亿发软件:中大型仓库进出货管理系统解决方案,定制软件让仓储作业高效便捷

中大型仓库出入库管理是传统厂家供应链管理流程的重要部分&#xff0c;直接关乎货物在仓库当中存储的安全&#xff0c;和员工工作的效率。一旦仓库管理当中出现了疏漏&#xff0c;那么货物的信息数据就会发生变动&#xff0c;导致实际与账目不符。人工带来的低效与不可控是传统…

软件测试行业到底有没有前景和出路?

我现在来跟你说说软件测试的真正情况。 首先一个软件做出来&#xff0c;最不能少的人是谁&#xff1f;不用说就是开发&#xff0c;因为开发是最了解软件运作的那个人&#xff0c;早期不少一人撸网站或者APP的例子&#xff0c;相当于一个人同时是产品、研发、测试、运维等等&am…

15-721 Chapter9 数据压缩

Background disk database的瓶颈在disk IO上的话&#xff08;也就是说数据压缩的好处很大&#xff0c;可以比较放心的做&#xff09;&#xff0c;那么内存数据库的瓶颈是多方面的&#xff0c;其中包含cpu。所以我们要在计算量和压缩率&#xff08;DRAM还是有点贵的&#xff0c…

需求管理实践四大流程的注意事项

需求管理实践包括四大流程&#xff1a;需求采集、需求分析、需求筛选和需求处理。 1、需求采集注意事项 需求采集需要通过多种形式对不同用户需求进行收集&#xff0c;并对需求的属性进行详细记录&#xff0c;并记录可追溯的反馈人员&#xff0c;以便后期跟踪修改。 需求管理实…

你不知道的Redis Search 以及安装指南

theme: orange 本文正在参加「金石计划」 这篇文章是为了使用Redis Search 的向量搜索功能提前做的环境准备工作。即讨论如何在准备生产的 linux 环境中安装 RediSearch 和 RedisJSON 模块。 什么是RediSearch&#xff1f; 根据RediSearch的官方文档 RediSearch是这样描述的。 …