← jQuery getJSON()方法:用GET请求轻松拉取JSON数据 jQuery on()方法:现代事件绑定的统一入口 →

jQuery replaceAll()方法:直接替换目标元素本身

原创 2026-05-01 jQuery 已有人查阅

在动态操作 DOM 时,有时候我们不只是想修改元素内部的内容,而是想把整个元素连同它的标签一起换成新的结构。jQuery 的 replaceAll() 方法干的就是这件事,它用你指定的新 HTML 元素,把选中的目标元素及其内部所有内容全部替换掉,返回的是被替换后的新内容所对应的元素。

语法与参数约定

这个方法的基本形式是:

$(content).replaceAll(selector);

两个参数都是必填的。content 用来定义你要插入的新 HTML 内容,它必须是合法的 HTML 标签字符串,不能是纯文本。selector 则用来定位要被替换掉的目标元素,可以是标签名、ID 或者类名等有效的 CSS 选择器。

这里有一个很容易搞混的地方,我个人刚接触时也犯过迷糊。replaceAll() 的写法顺序和 replaceWith() 正好相反。replaceWith() 是先选中目标再指定新内容,而 replaceAll() 是先构造好新内容再指定要替换谁。两者功能上能达到同样的效果,但在链式操作里的可读性会不一样。我通常在已经拿到新内容对象,需要用它去覆盖多个目标时用 replaceAll(),因为这个方向更符合"用新东西替代旧东西"的思维。

示例一:用指定元素精确替换不同目标

下面这个例子展示了 replaceAll() 很灵活的一面。页面上有两个 div 块、一段文字和一个按钮。点击按钮后,第一个 div 会被替换成一个 h1 标题,第二个 div 替换成 h2 标题,段落文字被换成新的段落内容,连按钮本身也会被替换成一段新文字。每种替换都用了各自独立的调用,目标选择器也各不相同。

<!DOCTYPE html>  
<html>  
<head>  
<title> jQuery replaceAll() 精确替换示例 </title>  
<script src= "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"> </script>  
  
  
<style>  
div {  
border: 2px dashed blue;  
width: auto;  
margin: 8px;  
font-size: 23px;  
text-align: center;  
}  
h1, h2{  
background-color: yellow;  
color: blue;  
}  
#d3{  
border: 2px solid blue;  
width: 150px;  
height: 15px;  
}  
</style>  
</head>  
<body>  
<p> 代码号学习编程:replaceAll() 方法实战 </p>  
<div id = "d1"> 这是一个 div 元素 </div>  
<div id = "d2"> 这是另一个 div 元素 </div>  
<p id = "p1"> 点击下方按钮查看替换效果 </p>  
<button id = "btn"> 点击替换 </button>  
<script>  
$(document).ready(function(){  
$("button").click(function() {  
$("<h1> 你好,代码号世界 :) </h1>").replaceAll("#d1");  
$("<h2> 欢迎来到代码号学习平台 </h2>").replaceAll("#d2");  
$("<p> 这是替换后的段落内容 </p>").replaceAll("#p1");  
$("<p> 按钮也被替换成了一段文字 </p>").replaceAll("#btn");  
});  
});  
</script>  
  
</body>  
</html>  

这个例子比较好地体现了 replaceAll() 在面对多个不同替换目标时,各自独立调用、互不干扰的特点。每一个调用都是一次完整的"取下旧元素、装入新结构"的操作。

示例二:批量替换同类元素

在页面中,可能需要一次性把所有同类型元素统一替换掉。下面这个例子中,页面上有多个段落元素和一个按钮。点击按钮后,所有的 p 标签连同它们各自的内容,都会被替换成同样的 h2 标题元素。

<!DOCTYPE html>  
<html>  
<head>  
<title> jQuery replaceAll() 批量替换示例 </title>  
<script src= "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"> </script>  
  
  
<style>  
h2{  
background-color: yellow;  
color: blue;  
}  
</style>  
</head>  
<body>  
<p> 代码号学习编程:批量替换同类元素 </p>  
<p> 这是第一个段落元素 </p>  
<p> 这是第二个段落元素 </p>  
<p> 点击下方按钮查看批量替换效果。 </p>  
<button id = "btn"> 全部替换 </button>  
<script>  
$(document).ready(function(){  
$("button").click(function() {  
$("<h2> 代码号,你好世界 :) </h2>").replaceAll("p");  
});  
});  
</script>  
  
</body>  
</html>  

注意这里的 $("<h2> 代码号,你好世界 :) </h2>").replaceAll("p") 这行代码,新内容只构造了一次,但 jQuery 会内部遍历所有匹配到的段落元素,逐一执行替换操作。这种批量处理的能力在需要对列表项、表格行做统一模板替换的场景里能省不少事。

示例三:使用伪类选择器做精确定位

replaceAll() 的 selector 参数支持各种 CSS 选择器组合,包括伪类。下面这个例子演示了用 :first-child 定位到第一个子元素来执行精准替换。页面中有两个 div 块,每个里面都包含其他元素,我们只把整个文档中第一个作为子元素出现的 div 整体替换成 h2 标题,其他 div 不受影响。

<!DOCTYPE html>  
<html>  
<head>  
<title> jQuery replaceAll() 伪类定位示例 </title>  
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"> </script>  
<style>  
h2{  
background-color: yellow;  
color: blue;  
}  
div{  
border: 2px solid blue;  
}  
</style>  
</head>  
<body>  
<div>  
<h3> 这是第一个 h3 标题 </h3>  
<h3> 这是另一个 h3 标题 </h3>  
</div>  
<br>  
<div>  
<p> 这是第一个段落元素 </p>  
<p> 这是另一个段落元素 </p>  
</div>  
<p> 点击下方按钮替换第一个 div 元素。 </p>  
<button id = "btn"> 精准替换 </button>  
<script>  
$(document).ready(function(){  
$("button").click(function() {  
$("<h2> 代码号,你好世界 :) </h2>").replaceAll("div:first-child");  
});  
});  
</script>  
</body>  
</html>  

这个例子里的 div:first-child 选择器,只匹配作为其父元素第一个子节点的 div。点击按钮后,第一个 div 整个结构会被新 h2 标题取代,而第二个 div 安然无恙。这种精细化控制在处理复杂页面结构时很有价值。

本节课程知识要点

使用 replaceAll() 时需要注意,它执行的是"替换"而非"插入",目标元素会从 DOM 树中彻底移除,连同它上面绑定的所有事件处理器和数据也会一起消失。如果你需要在替换后保留某些行为状态,就要在替换完成后重新做事件绑定。构造新内容的字符串中如果只给纯文本而没有 HTML 标签,jQuery 会认为这个选择器无效而直接返回空,不会执行任何替换。

← jQuery getJSON()方法:用GET请求轻松拉取JSON数据 jQuery on()方法:现代事件绑定的统一入口 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号