使用jQuery删除只有空格的元素

时间:2009-10-05 16:11:32

标签: jquery html

有没有办法删除此

<p> </p>

使用jQuery?

8 个答案:

答案 0 :(得分:46)

尝试:

$('p')
    .filter(function() {
        return $.trim($(this).text()) === '' && $(this).children().length == 0
    })
    .remove()

它的作用是找到所有没有任何内容的<p>,并将它们从DOM中删除。

答案 1 :(得分:15)

正如Greg上面提到的那样,测试修剪后的.text()会删除没有文字的段落,但会有一个像<img>标签这样的自包含元素。要避免,请修剪.html()返回。由于文本被视为DOM中的子元素,因此您将被设置。

$("p").filter( function() {
    return $.trim($(this).html()) == '';
}).remove()

答案 2 :(得分:2)

可能与here的答案相同,尝试在后面的代码上执行此操作。

使用jquery我将使用它:

$("p:empty").remove();

你也可以使用.empty(),它将从匹配元素集中删除所有子节点。

答案 3 :(得分:2)

这可能是CMS的更好解决方案。一些富文本编辑器在空段落中添加&nbsp;

    $("p").filter( function() {

        var html = $(this).html();

        if(html == '' || html == '&nbsp;')
            return true;

    }).addClass('emptyP');

答案 4 :(得分:1)

$("p").filter( function() {
            return $.trim($(this).html()) == '';
        }).remove()

我用它来删除包含非元素的空段,如IMG,Input,Select等。

答案 5 :(得分:0)

如果您只想删除所有空的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/

答案 6 :(得分:-1)

这应该处理 没有任何类型的子项 的任何元素(包括未展开的文本节点)。

$("p").filter(function() { 
  return !this.childNodes[0]
}).remove();

答案 7 :(得分:-4)

给它一个id(获取选择器)。

<p id="myP"></p>


<script>

$("#myP").remove();

</script>