2011-05-23 115 views
20

我正在構建網站的平臺在wysiwyg模式下生成空p標籤。我怎樣才能把這些拿出來?如何用jQuery刪除空p標籤?

這樣的事情,也許......

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

雖然上面的代碼什麼也不做。

回答

61

答案取決於什麼「空「的意思。如果空段落是<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,所以你可能需要上述有點醜陋的方法。

+0

這一個工作。謝謝。 – Steve 2011-05-23 04:42:44

+0

非常感謝你! – DextrousDave 2013-03-19 05:52:10

37

嘗試:

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

+0

最好和簡單 – 2017-03-29 07:34:37

3

你可以試試這個...

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

,如果選擇爲空,它將返回true .. Working Demo

1

我對聚會有點遲到,但最近我發現這個帖子,因爲我正在尋求解決這個問題。

我想出了一個香草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

希望這有助於!

+1

querySelectorAll存在舊版瀏覽器不支持的問題 – 2013-12-30 19:41:58

+0

好點。我猜在這種情況下,如果你選擇了帶有querySelector的香草路線,你可以使用一個Polyfill來添加舊的瀏覽器支持。 – ItsJonQ 2014-01-03 06:13:30

0

感謝「畝產過短」,

我已經試過你的代碼,它的工作原理,但我需要將其包裝在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不太好,我正在學習它)。

希望這能幫助像我這樣的人。

謝謝。

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