我正在构建网站的平台在wysiwyg模式下生成空p
标签。我怎么能把这些拿出来?
这样的事,也许......
$("<p> </p>").remove();
虽然上面的代码什么也没做。
答案 0 :(得分:66)
答案取决于“空”的含义。如果空段落为<p></p>
,那么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)喜欢将<p> </p>
添加到HTML中,因此您可能需要采用上述有点丑陋的方法。
答案 1 :(得分:42)
尝试:
$( 'p:empty' ).remove();
答案 2 :(得分:3)
答案 3 :(得分:1)
我参加派对有点晚了,但我最近发现了这个帖子,因为我也想解决这个问题。
我想出了一个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
希望这有帮助!
答案 4 :(得分:0)
感谢“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不太好,我正在学习它;)。
希望这有助于像我这样的另一个人。
感谢。
答案 5 :(得分:0)
/* Remove empty paragraphs with */
jQuery('p').each(function(){
if( jQuery(this).html() == ' ' )
jQuery(this).remove();
})
答案 6 :(得分:0)
如果有人需要这个用于 WP 网站,请使用这些:
jQuery('p').each(function() {
var $this = jQuery(this);
if($this.html().replace(/\s| /g, '').length == 0)
$this.remove();
});