删除jQuery&;中包含特定文本的所有标记;JavaScript
我试图找出如何在JavaScript和jQuery中从下面的html中删除所有删除jQuery&;中包含特定文本的所有标记;JavaScript,javascript,jquery,Javascript,Jquery,我试图找出如何在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>
实例:
<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>
我怎样才能: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);
$(').replaceAll('');//失败
$('#test').html()。替换('','');//部分失效
$('#test').html()。替换(//p>/gi',);//失败
$((“p:contains(“”)”)。替换(“”)//失败
$(“p:contains(“”)”)。替换为(“”);//失败
$((“p:contains(“”)”).remove()//失败?
//失败
var toRemove=$(“p:contains(“”)”);
$(“#测试”)。删除(删除);
有人能解释一下我做错了什么吗?我很想知道为什么。感谢您在此提供的帮助。您的逻辑问题是因为
:contains()
使用HTML编码的元素的文本内容,因此
被读取为单个空格,而不是您要查找的实体
使用html().replace()
也有缺陷,因为您正在处理返回的html字符串,但没有对值执行任何操作,而且html()
将仅检索集合中第一个元素的内容
要根据需要执行此操作,您可以使用filter()
并搜索与
匹配的html()
,如下所示:
$('p').filter(函数(){
返回$(this.html().trim()='';
}).remove()代码>
一些文本
一些文本
一些文本
一些文本
逻辑的问题是因为:contains()
使用HTML编码的元素的文本内容,因此
被读取为单个空格,而不是您要查找的实体
使用html().replace()
也有缺陷,因为您正在处理返回的html字符串,但没有对值执行任何操作,而且html()
将仅检索集合中第一个元素的内容
要根据需要执行此操作,您可以使用filter()
并搜索与
匹配的html()
,如下所示:
$('p').filter(函数(){
返回$(this.html().trim()='';
}).remove()代码>
一些文本
一些文本
一些文本
一些文本
包含
仅适用于节点的文本内容,而不适用于其内部HTML
您只需按内容对其进行筛选,然后使用remove()
:
$('p').filter(函数(){return$.trim($(this.html())=='').remove()代码>
一些文本
一些文本
一些文本
一些文本
包含
仅适用于节点的文本内容,而不适用于其内部HTML
您只需按内容对其进行筛选,然后使用remove()
:
$('p').filter(函数(){return$.trim($(this.html())=='').remove()代码>
一些文本
一些文本
一些文本
一些文本
这将起作用
$("p").html(function (i,html) {
if(!html.replace(/ /g, ''))
{
$(this).remove();
}
})
您可以参考。这将起作用
$("p").html(function (i,html) {
if(!html.replace(/ /g, ''))
{
$(this).remove();
}
})
您可以参考。选择所有p
s,检查每个段落的修剪内容,如果为空,则删除该段落。一个快速、肮脏且IE9+的解决方案:[].slice.call(document.querySelectorAll(“p”).forEach(函数(p){if(p.innerHTML==“”)p.parentNode.removeChild(p)})
选择所有p
s,检查每个段落的修剪内容,如果为空,则删除该段落。快速、肮脏且IE9+解决方案:[].slice.call(document.querySelectorAll(“p”)).forEach(函数(p){if(p.innerHTML==“”)p.parentNode.removeChild(p})代码>