2011-08-05 130 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; }