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

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

这样的事,也许……

$("

").remove();

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

答案取决于“空”意味着什么。 如果空段落是

那么fireeyedboy的p:empty选择器就是你要走的路。 如果可能有空格或换行或其他类似的东西,那么你可能会想要这样的东西:

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

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

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

 

到HTML中,因此您可能需要以上有些丑陋的方法。

尝试:

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

你可以试试这个……

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

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

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

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

希望这可以帮助!

谢谢“亩太短”,

我已经尝试过你的代码它可以工作,但我需要将它包装在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不太好,我正在学习它;)。

希望这能帮助像我这样的另一个人。

谢谢。

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