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

发布于 2024-11-09 06:29:09 字数 150 浏览 0 评论 0原文

我正在构建网站的平台在所见即所得模式下生成空的 p 标签。我怎样才能把这些取出来?

像这样的东西,也许...

$("

").remove();

尽管上面的代码什么也没做。

The platform I'm building a website on produces empty p tags in wysiwyg mode. How can I take these out?

Something like this, perhaps...

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

Although the code above does nothing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

嗼ふ静 2024-11-16 06:29:09

答案取决于“空”的含义。如果空段落是

那么 fireeyedboy 的 p:empty 选择器就是正确的选择。如果可能有空格或换行符或其他类似的东西,那么您可能需要这样的东西:

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

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

FCKEditor(不确定 CKEditor 或 TinyMCE)喜欢将

 

添加到 HTML,因此你可能需要上面有点丑陋的方法。

The answer depends on what "empty" means. If the empty paragraphs are <p></p> then fireeyedboy's p:empty selector is the way to go. If there could be spaces or newlines or other such things then you'll probably want something like this:

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

Example: http://jsfiddle.net/ambiguous/7L4WZ/

FCKEditor (not sure about CKEditor or TinyMCE) likes to add <p> </p> to the HTML so you might need the above somewhat ugly approach.

向日葵 2024-11-16 06:29:09

尝试:

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

Try:

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

微暖i 2024-11-16 06:29:09

你可以尝试这个...

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

如果选择器为空它将返回true..工作演示

you can try this...

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

it will return true if selector is empty..Working Demo

太傻旳人生 2024-11-16 06:29:09

我参加聚会有点晚了,但我最近发现了这个帖子,因为我也在寻求解决这个问题。

我在这里想出了一个 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

希望这有帮助!

I'm a little late to the party, but I found this thread recently as I was looking to solve this issue as well.

I came up with a Vanilla JS solution here, which worked for me:

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

It basically does (exactly) what fireeyedboy suggested, but without jQuery.

It also appears to perform better than jQuery as well:
http://jsperf.com/remove-empty-elements-javascript-vs-jquery

Hope this helps!

顾北清歌寒 2024-11-16 06:29:09

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

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

If anyone need this for WP site, so use these:

jQuery('p').each(function() {
        var $this = jQuery(this);
        if($this.html().replace(/\s| /g, '').length == 0)
            $this.remove();
    });
时光与爱终年不遇 2024-11-16 06:29:09

谢谢“mu太短”,

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

完整的代码对我有用是:

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

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

希望这可以帮助像我这样的人。

谢谢。

Thanks "mu is too short",

I've tried your code It works but I need to wrap it in jQuery(document).ready(function() {});

The full code worked for me is:

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

I don't know why this happens, My jQuery/JS is not so good, I'm learning it ;).

Hope this help another person like me.

Thanks.

梦年海沫深 2024-11-16 06:29:09
/* Remove empty paragraphs with   */
jQuery('p').each(function(){
    if( jQuery(this).html() == ' ' )
        jQuery(this).remove();
})
/* Remove empty paragraphs with   */
jQuery('p').each(function(){
    if( jQuery(this).html() == ' ' )
        jQuery(this).remove();
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文