Javascript 删除空的<;p>;,但每组只允许一个

Javascript 删除空的<;p>;,但每组只允许一个,javascript,jquery,jquery-selectors,is-empty,Javascript,Jquery,Jquery Selectors,Is Empty,我想知道如何删除空元素,但每个组只允许一个空元素(在非空元素旁边)? 类似于: ,但每组只允许一个“> 示例HTML: <p>Hello world</p> <p><br></p> <p><br></p> <!--This will remove--> <p><br></p> <!--This will remove--> <p>

我想知道如何删除空元素,但每个组只允许一个空元素(在非空元素旁边)?

类似于:

,但每组只允许一个“>

示例HTML:

<p>Hello world</p>
<p><br></p>
<p><br></p> <!--This will remove-->
<p><br></p> <!--This will remove-->
<p>Lorem ipsum dolor sit amet</p>
<p><br></p>
<p><br></p> <!--This will remove-->
<p>Eum ne nostro admodum</p>
<p><br></p>
var p_empty = $('p').filter(function(i,v){return $.trim($(v).text()).length===0;});
现在我得到了所有的空元素,但是你知道如何删除下一个空元素吗

工作流:

<p>Hello world</p>
<p><br></p>
<p><br></p> <!--This will remove-->
<p><br></p> <!--This will remove-->
<p>Lorem ipsum dolor sit amet</p>
<p><br></p>
<p><br></p> <!--This will remove-->
<p>Eum ne nostro admodum</p>
<p><br></p>
var p_empty = $('p').filter(function(i,v){return $.trim($(v).text()).length===0;});

PS:我也在寻找良好的JS性能

在您的情况下,因为您没有使用容器,所以您必须使用同级选择器
+
,并确保前面的
p
元素本身不是
。空的

$('p.empty:not(p:not(.empty) + p.empty)').remove();
var p_empty=$('p')。过滤器(函数(i,v){
返回$.trim($(v).text()).length==0;
});
p_empty.addClass('empty');
$('p.empty:not(p:not(.empty)+p.empty)).remove();
p{
填充:3x10px;
背景:#eee;
颜色:#999;
字体大小:12px;
线高:12px;
}
p、 空的{
边框:1px虚线#fff;
背景:#edd;
}

你好,世界




Lorem ipsum dolor sit amet



你是谁



只需在过滤器中添加更多内容即可

var p_empty = $('p').filter(function(i,v){
    return $.trim($(v).text()).length===0 && $.trim($(v).prev().text()).length===0;
});
var p_empty=$('p')。过滤器(函数(i,v){
返回$.trim($(v).text()).length==0;
});
p_empty.addClass('empty');
$('p.empty+p.empty').remove();
p{
填充:3x10px;
背景:#eee;
颜色:#999;
字体大小:12px;
线高:12px;
}
p、 空的{
边框:1px虚线#fff;
背景:#edd;
}

你好,世界




Lorem ipsum dolor sit amet



你是谁



很酷的一款,用它完成每件事都很好selector@l2aelba是的,那个!:)希望如此helped@TwilightSun,是的,但是如果我们知道演出的成功,我和你现在都会在角落里哭泣!但是,我相信只要我们不是在谈论一个巨大的问题,差别是可以忽略的DOM@AmmarCSE,这只是N到2N的时间复杂性改变。如果DOM真的很大,不要认为优化算法会有多大帮助。我宁愿保持代码简单。@ammarces这$('p.empty:not(p:not(.empty)))有什么用呢?很好!这实际上是可行的,因为第一个算法永远不会包含在此选择器中:)^1