javascript - 删除 jQuery 和 JavaScript 中包含特定文本的所有标签
问题描述
我试图找出如何<p> </p>
在 JavaScript 和 jQuery 中从下面的 html 中删除所有实例:
<div id='test'>
<p>some text</p>
<p> </p>
<p>some text</p>
<p> </p>
<p>some text</p>
<p> </p>
<p>some text</p>
</div>
我最接近的是:
$('#test').html().replace(/ /gi,''); // only removes but not tags
我如何:
1. 选择所有带有 in 的标签?(在 JS 和 JQ 中)
2. 并删除?
(大概是这样,但不能像上面的1一样测试:JQ:el.remove();JS:el.parentNode.removeChild(el))
我也尝试了以下但无济于事:
$('<p> </p>').replaceAll(''); // fails
$('#test').html().replace('<p> </p>',''); // partially fails
$('#test').html().replace(/<p> </p>/gi,''); // fails
$("p:contains(' ')").replace('') // fails
$("p:contains(' ')").replaceWith(''); // fails
$("p:contains(' ')").remove() // fails?
// fails
var toRemove = $("p:contains(' ')");
$('#test').remove(toRemove);
有人可以解释我在这里做错了什么吗?我很想知道为什么。感谢您在这里的任何帮助。
解决方案
contains
仅适用于节点的文本内容,不适用于其 innerHTML。
您可以按内容过滤它们,然后使用remove()
:
$('p').filter(function() { return $.trim($(this).html()) == ' ' }).remove();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='test'>
<p>some text</p>
<p> </p>
<p>some text</p>
<p> </p>
<p>some text</p>
<p> </p>
<p>some text</p>
</div>
推荐阅读
- java - 如何根据 JFrame 大小调整 JTable 的大小
- python - 如何根据第二列的最小值确定列值,按第一列分组?
- python - Cython:如何制作具有不同签名的函数数组
- r - 将 sf 多边形测量为线段
- c++ - 有符号的main()和int main()之间的区别?
- c# - ASP.NET Core 3 中的多种身份验证类型
- python - 如何连接固定两个枢轴的列表元素?
- moq - Autofacs AutoMock 的目的是什么
- python - 我需要为 K-Fold 交叉验证中的每个折叠创建一个新的分类器吗?
- c# - 在 Asp.net Core Mvc 中的视频上添加水印(文本)