如何使用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(); })