假设我有以下标记:
<p></p>
<p>not empty</p>
<p>not empty</p>
<p></p>
<div class="wrapper">
// more content inside
</div>
<p> </p> <-- whitespace, also removed
<p></p>
<p>not empty</p>
如何删除最靠近<p>
的空.wrapper
标记?我想要一个这样的结果:
<p></p>
<p>not empty</p>
<p>not empty</p>
<div class="wrapper">
// more content inside
</div>
<p>not empty</p>
所以我不想删除所有空的兄弟姐妹,只是删除.wrapper
旁边的空兄弟姐妹,即使有多个。
答案 0 :(得分:7)
您可以将.prevUntil
/ .nextUntil
与:not(:empty)
选择器结合使用:http://jsfiddle.net/vEtv8/5/。
$("div.wrapper")
.nextUntil(":not(p), :not(:empty)").remove().end()
.prevUntil(":not(p), :not(:empty)").remove();
但是, :empty
不会将空白元素视为空。你可以使用一个函数:http://jsfiddle.net/vEtv8/4/。
var stopPredicate = function() {
var $this = $(this);
return !$this.is("p") || $.trim($this.text()) !== "";
};
$("div.wrapper")
.nextUntil(stopPredicate).remove().end()
.prevUntil(stopPredicate).remove();
答案 1 :(得分:1)
$('.wrapper').prevAll('p:empty').nextAll('p:empty').remove();