【发布时间】:2013-09-06 23:40:10
【问题描述】:
有没有办法去掉这个
<p> </p>
使用 jQuery?
【问题讨论】:
-
问题:你控制生成的源吗?如果是这样,您是否考虑过不生成空标签?
有没有办法去掉这个
<p> </p>
使用 jQuery?
【问题讨论】:
试试:
$('p')
.filter(function() {
return $.trim($(this).text()) === '' && $(this).children().length == 0
})
.remove()
它的作用是找到所有没有任何内容的<p>s,并将它们从 DOM 中删除。
【讨论】:
标签
return $.trim($(this).text()) === '' && $(this).children().length == 0 将会工作。
正如 Greg 上面提到的,测试修剪后的 .text() 将删除没有文本的段落,但确实有一个独立的元素,如 <img> 标记。为避免,修剪 .html() 返回。由于文本被视为 DOM 中的子元素,因此您将被设置。
$("p").filter( function() {
return $.trim($(this).html()) == '';
}).remove()
【讨论】:
这对于 CMS 来说可能是一个更好的解决方案。一些富文本编辑器在空段落中添加&nbsp;。
$("p").filter( function() {
var html = $(this).html();
if(html == '' || html == ' ')
return true;
}).addClass('emptyP');
【讨论】:
可能与here 的答案相同,请尝试在后面的代码中执行此操作。
使用 jquery 我会使用这个:
$("p:empty").remove();
您也可以使用 .empty(),它将从匹配元素集中删除所有子节点。
【讨论】:
<p> </p>,因为它与:empty 选择器不匹配。
p:empty { display: none; }
$("p").filter( function() {
return $.trim($(this).html()) == '';
}).remove()
我用它来删除不包含 IMG、Input、Select 等元素的空段落。
【讨论】:
如果您想简单地删除所有空的 P 元素,或者只有一个空格的 P,那么您可以这样做:
$('p').map( function(){
var html = $(this).html();
if( !html.length || html == ' ' || html == String.fromCharCode(255) )
return this;
}).remove();
这会遍历页面上的所有 P,如果它们符合特定条件(它们为空或只有一个空格),则它将它们从 DOM 中删除。
此外,通过将我们的 html 内容分配给一个局部变量,它可以帮助脚本更快地运行。要查找不间断空格,我只需将内容与从 ASCII 字符代码 255(这是一个不间断空格)创建的字符串进行比较。
当一个简单的过滤器或属性比较不够用时,jQuery 的 map() 函数会很棒。
你可以在这里阅读更多关于它的信息......http://api.jquery.com/map/
【讨论】:
这应该处理没有任何类型的子节点的任何元素(包括未包装的文本节点)。
$("p").filter(function() {
return !this.childNodes[0]
}).remove();
【讨论】:
<p> </p>,不确定这是否是您的意图。
给它一个 id(以获取选择器)。
<p id="myP"></p>
<script>
$("#myP").remove();
</script>
【讨论】: