首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除空的<p>,但每个组只允许一个

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

Stack Overflow用户
提问于 2015-06-17 14:36:16
回答 3查看 105关注 0票数 2

我想知道如何删除空元素,,但每个组只允许一个空元素(仅次于非空元素)

,类似于:

示例HTML :

代码语言:javascript
运行
复制
<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>

和jQuery用于检查空元素:

代码语言:javascript
运行
复制
var p_empty = $('p').filter(function(i,v){return $.trim($(v).text()).length===0;});

现在我得到了所有的空元素,但是知道如何删除下一个空元素吗?

工作流: http://jsfiddle.net/jmy0uzw1/

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-17 14:39:00

在您的情况下,由于您没有使用容器,所以您必须使用兄弟选择器+,并确保前面的p元素本身不是.empty的。

代码语言:javascript
运行
复制
$('p.empty:not(p:not(.empty) + p.empty)').remove();

代码语言:javascript
运行
复制
var p_empty = $('p').filter(function(i, v) {
  return $.trim($(v).text()).length === 0;
});

p_empty.addClass('empty');

$('p.empty:not(p:not(.empty) + p.empty)').remove();
代码语言:javascript
运行
复制
p {
  padding: 3px 10px;
  background: #eee;
  color: #999;
  font-size: 12px;
  line-height: 12px;
}
p.empty {
  border: 1px dashed #fff;
  background: #edd;
}
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<p>Hello world</p>
<p>
  <br>
</p>
<p>
  <br>
</p>
<p>
  <br>
</p>
<p>Lorem ipsum dolor sit amet</p>
<p>
  <br>
</p>
<p>
  <br>
</p>
<p>Eum ne nostro admodum</p>
<p>
  <br>
</p>

票数 7
EN

Stack Overflow用户

发布于 2015-06-17 14:54:22

代码语言:javascript
运行
复制
var p_empty = $('p').filter(function(i, v) {
  return $.trim($(v).text()).length === 0;
});

p_empty.addClass('empty');
$('p.empty + p.empty').remove();
代码语言:javascript
运行
复制
p {
  padding: 3px 10px;
  background: #eee;
  color: #999;
  font-size: 12px;
  line-height: 12px;
}
p.empty {
  border: 1px dashed #fff;
  background: #edd;
}
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Hello world</p>
<p>
  <br>
</p>
<p>
  <br>
</p>
<p>
  <br>
</p>
<p>Lorem ipsum dolor sit amet</p>
<p>
  <br>
</p>
<p>
  <br>
</p>
<p>Eum ne nostro admodum</p>
<p>
  <br>
</p>

试试这个:

代码语言:javascript
运行
复制
$('p.empty + p.empty').remove();

全码

代码语言:javascript
运行
复制
var p_empty = $('p').filter(function(i, v) {
  return $.trim($(v).text()).length === 0;
});

p_empty.addClass('empty');
$('p.empty + p.empty').remove();
票数 2
EN

Stack Overflow用户

发布于 2015-06-17 14:42:42

只需将更多内容添加到过滤器中即可。

代码语言:javascript
运行
复制
var p_empty = $('p').filter(function(i,v){
    return $.trim($(v).text()).length===0 && $.trim($(v).prev().text()).length===0;
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30894740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档