首页 > 其他分享 >jQuery的DOM操作

jQuery的DOM操作

时间:2024-08-17 10:53:34浏览次数:12  
标签:jQuery DOM container 匹配 对象 元素 添加 操作

一,前言

本篇文章包含如何使用jQuery来操作DOM对象:

第一部分关于class的操作:addClass(),removeClass(),toggleClass(),hasClass()方法;

第二部分关于操作元素对象的属性:innerHTML,value,attribution等;

第三部分关于操作元素关系:wrap,wrapAll,unwrap,wrapInner来调控元素父子级关系;

第四部分关于插入元素功能:append(),prepend()方法;

第五部分关于添加元素siblings:before(),after()方法;

第六部分关于元素移除:empty(),remove()方法;

最后一部分关于DOM对象的替换:replaceAll(),replaceWith()方法。

 

二,DOM操作

(1)Class操作

  • addClass: 为匹配的DOM对象添加一个或多个class(空格隔开)
  • removeClass: 为匹配的DOM对象移除一个或多个class
  • toggleClass: 跟开关一样,如果没有classA就添加,如果有就移除
  • hasClass: 是否有这个class呢?返回true/false
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<script src="../static/js/jquery-3.7.1.min.js"></script>
<style>
  .container {
    background-color: aqua;
  }
</style>

<body>
  <div style="height: 200px;" id="root"></div>
  <button id="btn1">添加样式</button>
  <button id="btn2">删除样式</button>
  <button id="btn3">反转</button>
  <script>
    $("#btn1").on("click", function () {
      $("#root").addClass("container");
    })
    $("#btn2").on("click", function () {
      $("#root").removeClass("container");
    })
    $("#btn3").on("click", function () {
      $("#root").toggleClass("container");
    })
    console.log($("#root").hasClass("container"));


  </script>
</body>

</html>

 

(2)DOM属性

  • html: 获取匹配的DOM对象的innerHTML内容
  • val: 获取input标签的内容
  • attr: 获取匹配的DOM对象的属性
  • removeAttr: 移除匹配的DOM对象的属性

以上的获取方法都可以用来设置对应的内容,不填参数为获取,填参数为设置。

 

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<script src="../static/js/jquery-3.7.1.min.js"></script>
<style>
  .container {
    background-color: aqua;
  }
</style>

<body>
  <div style="height: 200px;" id="root"></div>
  <button id="btn1">显示文字</button>
  <input type="text">
  <script>
    $("#root").html("<a href='www.baidu.com'>百度</a>");//为div添加一个百度链接
    $("#btn1").on("click", function () {
      $("input").val("11111123");
    })//点击按钮为input表单填入内容
    $("#root").attr("id");//查询root的id==root
    $("input").attr({
      name: "username",
      title: "haha"
    })//添加属性的时候可以用对象赋值,也可以一对一
    $("input").attr("style", "height:100px");
    $("").removeAttr("attrname");//同理移除属性


  </script>
</body>

</html>

 

(3)元素关系

  • wrap:  为匹配的DOM对象包裹一个html对象
  • unwrap:  给匹配的DOM对象的父级删除,保留DOM对象的位置
  • wrapAll:  在所有匹配的DOM对象包裹一个html对象
  • wrapInner:  为匹配的DOM对象的内容添加一层结构

 wrap()方法和wrapAll()方法有何区别呢?

wrap方法

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<script src="../static/js/jquery-3.7.1.min.js"></script>
<style>
  .container {
    background-color: aqua;
  }
</style>

<body>
  <div id="root"></div>
  <p>1</p>
  <p>2</p>
  <p>3</p>
  <script>
    $("p").wrap("<div></div>")


  </script>
</body>

</html>

 

wrap方法遇到复数匹配的DOM对象后会为每个匹配对象包裹一个div

wrapAll()方法

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<script src="../static/js/jquery-3.7.1.min.js"></script>
<style>
  .container {
    background-color: aqua;
  }
</style>

<body>
  <div id="root"></div>
  <p>1</p>
  <p>2</p>
  <p>3</p>
  <script>
    $("p").wrapAll("<div></div>")


  </script>
</body>

</html>

 

使用wrapAll()方法则是为匹配的DOM对象共同包裹一个大的div 

unwrap()方法就是wrap的逆 ,wrapInner也一道讲了

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<script src="../static/js/jquery-3.7.1.min.js"></script>
<style>
  .container {
    background-color: aqua;
  }
</style>

<body>
  <div id="root">
    <ul></ul>
  </div>
  <p>1</p>
  <p>2</p>
  <p>3</p>
  <script>
    $("ul").unwrap();
    $("p").wrapInner("<b></b>");//为每个p标签添加<b></b>


  </script>
</body>

</html>

 

我们发现ul元素外部的div已经不见了,每个p标签都已经加粗了。 

(4)元素后代插入 

  • append: 在匹配的DOM对象的末尾添加元素(内部)
  • prepend: 在匹配的DOM对象的前面添加元素(内部)

  何以理解内部:append/prepend都是在匹配元素内部添加,换言之,添加的元素是匹配元素的子级,如果没有标签,就以text节点为标准,亦是没有,append与prepend效果一致。为什么要理解内部概念呢,因为before(),after()方法就是对于匹配元素的同级前后添加html元素的。

 

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<script src="../static/js/jquery-3.7.1.min.js"></script>
<style>
  .container {
    background-color: aqua;
  }
</style>

<body>
  <div id="root">
    <ul></ul>
  </div>
  <p>1</p>
  <p>2</p>
  <p>3</p>
  <script>
    $("p").append("<div>hello</div>");
    $("p").prepend("<div>hello</div>");



  </script>
</body>

</html>

 

 

(5)元素同级插入

  • after: 在匹配的每一个DOM对象之后添加标签作为兄弟节点
  • before: 在匹配的每一个DOM对象之前添加标签作为兄弟节点
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<script src="../static/js/jquery-3.7.1.min.js"></script>
<style>
  .container {
    background-color: aqua;
    height: 100px;
  }
</style>

<body>
  <div id="root">
    <ul></ul>
  </div>
  <p>1</p>
  <p>2</p>
  <p>3</p>
  <script>
    $("p").before("<div class='container'></div>")


  </script>
</body>

</html>

 

after()方法效果和before()差不多,只是顺序上的差别。 

(6)元素移除

  • empty: 从DOM中移除集合中匹配元素的所有子节点
  • remove: 从DOM中移除集合中匹配元素的所有子节点
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<script src="../static/js/jquery-3.7.1.min.js"></script>
<style>
  .container {
    background-color: aqua;
    height: 100px;
  }
</style>

<body>
  <div>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
  </div>
  <p id="content">hello</p>
  <script>
    $("div").empty()//删除所有子节点,不包括匹配的DOM对象
    $("#content").remove()//本身也被删除

  </script>
</body>

</html>

 

 

(7)元素替换

  • replaceAll:  用集合的匹配元素替换每个目标元素
  • replaceWith:  用提供的内容替换集合中所有匹配的元素

!  replaceAll有点反人类,replaceWith比较符合正常的逻辑顺序:replaceAll是用$(content).replaceAll(label)中的content取代所有label

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<script src="../static/js/jquery-3.7.1.min.js"></script>
<style>
  .container {
    background-color: aqua;
    height: 100px;
  }
</style>

<body>
  <p id="content">hello</p>
  <li>hahaha</li>
  <script>
    $("<b>world<b>").replaceAll("p");
    $("li").replaceWith("<b>替换文本<b>");
  </script>
</body>

</html>

 

 

 三,结语

本篇文章操作的对象都是DOM,属性操作,添加html用的比较多。需要注意的是wrap,wrapAll方法的区别,这可能会导致选区产生错误。append与after,prepend与before的区别是子级与同级的区别。创作不易,鼓励一下~

标签:jQuery,DOM,container,匹配,对象,元素,添加,操作
From: https://blog.csdn.net/ma_no_lo/article/details/141232165

相关文章

  • C#文件操作相关(1)
    今日份主要内容:文件操作相关文件相关类:File类,FileInnfo类路径类:Path类盘符类:DriverInfo类目录类:Directory类,DirectoryInfo类文件的输入与输出类:FileStream类,MemoryStream类,StreamReader类,StreamWriter类,StringReader类,StringWriter类常用文件类概述文件、目录(......
  • Cisco NX-OS Software Release 10.5(1)F - 网络操作系统软件
    CiscoNX-OSSoftwareRelease10.5(1)F-网络操作系统软件NX-OS网络操作系统请访问原文链接:https://sysin.org/blog/cisco-nx-os-10/,查看最新版。原创作品,转载请保留出处。CiscoNX-OSCiscoNX-OS操作系统助力网络紧跟业务发展步伐。功能和优势NX-OS网络操作系统为现代......
  • 操作系统--精髓与设计原理(第八版)复习题答案
    操作系统-精髓与设计原理(第八版)复习题-随笔分类-浩楠honer-博客园(cnblogs.com)  转至此操作系统--精髓与设计原理(第八版)第一章复习题答案1.1列出并简要定义计算机的四个组成部分。处理器:控制计算机的操作,执行数据处理功能。内存:也叫主存储器,存储数据和程序。输......
  • Mysq-造数工具mysql_random_data_load
    1.背景实际开发中,做sql优化,为确保可行性,可能需要模拟出大量数据验证。此处,介绍一个造数工具mysql_random_data_load,体验了下,很方便。2.使用2.1下载下载:mysql_random_data_load(releases页面)选择合适的版本,例如。2.2安装上传到服务器直接解压即可。tar-zxvfmysql_r......
  • Netty的常用操作
    EventLoopEventLoop本质上是一个单线程执行器,里面有run方法处理Channel上源源不断的IO事件。EventLoop继承了ScheduledExecutorService中的所有方法。常用方法Future<?>submit(Runnabletask)提交任务ScheduledFuture<?>scheduleWithFixedDelay(Runnablecommand,long......
  • 操作符详解(二)
    目录1.逗号表达式2.下标访问[]、函数调用()1) []下标引用操作符2) 函数调用操作符3.结构成员访问操作符1)结构体2)结构的声明3)结构体变量的定义和初始化4)结构体成员的直接访问5)结构体成员的间接访问4.操作符的属性:优先级、结合性1)优先级2)结合性5. 表达......
  • 操作系统-系统环境
    一、UNIX系统介绍​诞生于1971年美国AT&T公司的贝尔实验室,主要开发者是丹尼斯.里奇、肯.汤普逊。​ 该系统的主要特点是支持多用户、多任务,并支持多种处理器架构,同时具有高安全性、高可靠性、高稳定性,既可以构建大型关键业务系统的商业服务器,也可以构建面向移动终端、手持设......
  • 腾讯地图SDK Android版开发 5 地图交互操作
    腾讯地图SDKAndroid版开发5地图交互操作前言控件介绍控件介绍接口控件常量地图控件点击事件示例代码效果图地图手势地图手势方法说明地图手势开关地图手势事件当地图被点击时回调接口当地图被长按时回调接口地图手势识别的回调地图状态地图状态类地图状态构造类地......
  • React 的虚拟 DOM 和 Vue 的虚拟 DOM 有什么区别?
    React和Vue都使用虚拟DOM(VirtualDOM)来实现高效的UI渲染。1.引言介绍虚拟DOM的概念和重要性。提到React和Vue都采用了虚拟DOM来优化视图更新过程。2.什么是虚拟DOM?定义虚拟DOM:它是一种用JavaScript对象表示UI结构的技术。解释虚拟DOM如何与......
  • utilman.exe 是 Windows 操作系统中的一个系统工具程序,全称为 Utility Manager。它的
    utilman.exe(实用工具管理器)在Windows系统中主要用于启动辅助功能工具,但它也曾经被发现存在一些安全漏洞。这些漏洞通常利用utilman.exe的特性进行权限提升或绕过安全机制。以下是一些已知的与utilman.exe相关的公开漏洞:1. CVE-2019-0708(BlueKeep)描述:这个漏洞影响了......