有没有办法去掉这个?
<p> </p>
使用jQuery?
尝试:
$('p')
.filter(function() {
return $.trim($(this).text()) === '' && $(this).children().length == 0
})
.remove()
这段代码的作用是找到所有没有内容的<p>
元素,并将其从DOM中删除。
return $.trim($(this).text()) === '' && $(this).children().length == 0
这样写就可以了。 - JiminP正如Greg在上面提到的那样,测试修剪过的.text()会删除没有文本,但有一个自包含元素如<img>
标签的段落。为避免这种情况,请修剪.html()返回值。由于文本被视为DOM中的子元素,因此您将受到保护。
$("p").filter( function() {
return $.trim($(this).html()) == '';
}).remove()
。 $("p").filter( function() {
var html = $(this).html();
if(html == '' || html == ' ')
return true;
}).addClass('emptyP');
<p> </p>
,因为它与:empty
选择器不匹配。 - Muhdp:empty { display: none; }
- ifthenelse$("p").filter( function() {
return $.trim($(this).html()) == '';
}).remove()
$('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>
,不确定这是否是您的意图。 - Muhd<p id="myP"></p>
<script>
$("#myP").remove();
</script>