如何使用jQuery删除空p标签?

时间:2011-05-23 04:32:57

标签: jquery

我正在构建网站的平台在wysiwyg模式下生成空p标签。我怎么能把这些拿出来?

这样的事,也许......

$("<p> </p>").remove();

虽然上面的代码什么也没做。

7 个答案:

答案 0 :(得分:66)

答案取决于“空”的含义。如果空段落为<p></p>,那么fireeyedboy的p:empty选择器就是最佳选择。如果可能有空格或换行或其他类似的东西,那么你可能会想要这样的东西:

$('p').each(function() {
    var $this = $(this);
    if($this.html().replace(/\s|&nbsp;/g, '').length == 0)
        $this.remove();
});

示例:http://jsfiddle.net/ambiguous/7L4WZ/

FCKEditor(不确定CKEditor或TinyMCE)喜欢将<p>&nbsp;</p>添加到HTML中,因此您可能需要采用上述有点丑陋的方法。

答案 1 :(得分:42)

尝试:

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

答案 2 :(得分:3)

你可以试试这个......

$([selector]).is(":empty")   

如果selector为空,它将返回true。Working Demo

答案 3 :(得分:1)

我参加派对有点晚了,但我最近发现了这个帖子,因为我也想解决这个问题。

我想出了一个Vanilla JS解决方案,这对我有用:

var p = document.querySelectorAll('p:empty');
for(var i = p.length - 1; i > -1; i-- ) {
    p[i].parentNode.removeChild(p[i]);
}

它基本上(确切地)确实是fireeyedboy建议的,但没有jQuery。

它似乎也比jQuery表现更好: http://jsperf.com/remove-empty-elements-javascript-vs-jquery

希望这有帮助!

答案 4 :(得分:0)

感谢“mu太短”,

我已经尝试过你的代码但是我需要将它包装在jQuery(document).ready(function() {});

完整的代码对我有用:

jQuery(document).ready(function() {
    jQuery('p').each(function() {
        var $this = jQuery(this);
        if($this.html().replace(/\s|&nbsp;/g, '').length == 0) {
            $this.remove();
        }
    });
});

我不知道为什么会这样,我的jQuery / JS不太好,我正在学习它;)。

希望这有助于像我这样的另一个人。

感谢。

答案 5 :(得分:0)

/* Remove empty paragraphs with &nbsp; */
jQuery('p').each(function(){
    if( jQuery(this).html() == '&nbsp;' )
        jQuery(this).remove();
})

答案 6 :(得分:0)

如果有人需要这个用于 WP 网站,请使用这些:

jQuery('p').each(function() {
        var $this = jQuery(this);
        if($this.html().replace(/\s| /g, '').length == 0)
            $this.remove();
    });