2011-08-05 192 views
1

我需要你的幫助與JavaScript正則表達式,再次。刪除所有空p標籤

有時我在DOM中有空的p標籤,我將它們全部刪除。

有的樣子:

<p></p> 

其他人一樣:

<p> </p> 

我覺得對於一個正則表達式的親本是很蹩腳的,但我不擅長與它:(

所以在此先感謝:)

+1

@Yepp我不明白這一點。你爲什麼要這樣做,節省帶寬? – Deeptechtons

回答

9

你不需要使用正則表達式來實現這麼簡單的事情。無論如何,你很可能需要迭代所有'p'元素。像這樣的工作:

http://jsfiddle.net/mqchen/3pV2P/

$('p').each(function(index, item) { 
    if($.trim($(item).text()) === "") { 
     $(item).slideUp(); // $(item).remove(); 
    } 
}); 
+2

我喜歡'如果(!$(item).text()。trim()){...}' –

+2

工作正常,但在IE中不可用導致不知道修剪功能 –

+0

@Yepp - 感謝您的擡頭!我已經更新了示例以使用jQuery的'trim()'函數。 – mqchen

3

這是一個非常基本的正則表達式:

<p>\s*<\/p> 

這裏是一個simple RegEx Tester for Firefox這可能會幫助你在未來。我使用它很多。

+0

好吧,這看起來不錯,但我現在如何刪除所有比賽? –

+0

請編輯您的問題,添加您還希望代碼刪除空節點 - 這並不清楚問題。也可能想補充說,你使用jQuery,因爲這只是在標籤到目前爲止,我認爲你沒有使用它。 – pyvi

1

接受的答案是原因完全正確的,但因爲海報問如何使用正則表達式,這裏是一個版本(完整性如果你願意),做只是:

$('p').map(function() { 
    if(/^[\s ]*$/.test($(this).text())) { 
     $(this).remove(); 
    }  
}); 

注意一個更好的正則表達式版本可以通過使用jQuery regex selector extension

2

這就是被achived一些有時幫助的方法

$('p:empty').hide() 
p:empty { display: none; }