Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除jQuery&;中包含特定文本的所有标记;JavaScript_Javascript_Jquery - Fatal编程技术网

删除jQuery&;中包含特定文本的所有标记;JavaScript

删除jQuery&;中包含特定文本的所有标记;JavaScript,javascript,jquery,Javascript,Jquery,我试图找出如何在JavaScript和jQuery中从下面的html中删除所有实例: <div id='test'> <p>some text</p> <p>&nbsp;</p> <p>some text</p> <p>&nbsp;</p> <p>some text</p> <p>&nbsp;</p> <p>

我试图找出如何在JavaScript和jQuery中从下面的html中删除所有

实例:

<div id='test'>
<p>some text</p>
<p>&nbsp;</p>
<p>some text</p>
<p>&nbsp;</p>
<p>some text</p>
<p>&nbsp;</p>
<p>some text</p>
</div>
我怎样才能:
1.选择所有带有in的标记?(在JS和JQ中)
2.和删除?
(大概是这样,但无法测试,因为无法执行上面的1:JQ:el.remove();JS:el.parentNode.removeChild(el))

我也尝试过以下方法,但没有效果:

$('<p>&nbsp;</p>').replaceAll(''); // fails
$('#test').html().replace('<p>&nbsp;</p>',''); // partially fails
$('#test').html().replace(/<p>&nbsp;</p>/gi,''); // fails
$("p:contains('&nbsp;')").replace('') // fails
$("p:contains('&nbsp;')").replaceWith(''); // fails
$("p:contains('&nbsp;')").remove() // fails?
// fails
var toRemove = $("p:contains('&nbsp;')");
$('#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(/&nbsp;/g, ''))
    {
    $(this).remove();
    }
})
您可以参考。

这将起作用

$("p").html(function (i,html) {

    if(!html.replace(/&nbsp;/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})