jquery - Jquery查找子对象包含并替换文本
问题描述
<div id='foo'>
<a><b>a</b></a>
<a><b>b</b></a>
<a><b>c</b></a>
</div>
$('#foo:contains("b")').text('bb');
我需要找到孩子 obj 的内容并替换其他内容,但上面的代码将替换 id foo 中的所有内容。
我需要的是如果在#foo 中包含'b' 找到该子元素并替换不同的字符串
解决方案
请改用选择器来#foo b:contains("b")
选择 b 的b
子代:#foo
contains
$('#foo b:contains("b")').text('bb');
console.log($('#foo')[0].innerHTML);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='foo'>
<a><b>a</b></a>
<a><b>b</b></a>
<a><b>c</b></a>
</div>
如果您不知道标签名称,并且需要找到一个包含包含 的文本节点的元素b
,那么过滤至少包含一个文本节点的元素会有点复杂,childNode
该文本节点具有b
:
const $allElementsThatContainB = $('#foo *:contains("b")');
const $elementsWhichImmediatelyContainB = $allElementsThatContainB.filter(function() {
return [...this.childNodes].some(node => node.nodeType === 3 && node.textContent.includes('b'));
});
$elementsWhichImmediatelyContainB.text('bb');
console.log($('#foo')[0].innerHTML);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='foo'>
<a><b>a</b></a>
<a><b>b</b></a>
<a><b>c</b></a>
</div>
如果您只想查找其 innerHTML恰好 b
为的元素,则更容易:
const $allElementsThatContainB = $('#foo *:contains("b")');
const $elementsWhichImmediatelyContainB = $allElementsThatContainB.filter(function() {
return this.innerHTML = 'b';
});
$elementsWhichImmediatelyContainB.text('bb');
console.log($('#foo')[0].innerHTML);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='foo'>
<a><b>a</b></a>
<a><b>b</b></a>
<a><b>c</b></a>
</div>
推荐阅读
- c++ - 错误 C2665 'OdlRead':28 个重载都不能转换所有参数类型
- r - 在 Windows 上重现 CRAN 检查单元测试问题:“错误:找不到 DLL 'vctrs':可能没有为此架构安装?”
- echarts - 使用 ECharts 绘制实时心电图数据
- r - R 和 RStudio 中 Shiny 的衰落(未找到)
- javascript - 循环遍历 JavaScript 中的嵌套数组
- c++ - 尝试将对象分配给 C++ 中不同类型的对象
- c++ - 我应该为蓝牙库使用套接字还是 comport?
- javascript - 选择不同的选项值后更新 EJS 文件
- r - 将分钟 as.ITime() 添加到 as.ITime() 作为固定时间
- php - PHP - 使用 instanceof 记录 IDE 自动完成的变量类型