4

次のマークアップがあるとします。

<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。複数ある場合でも、隣の空の兄弟だけを削除します。

4

2 に答える 2

7

.prevUntil/をセレクター .nextUntilと組み合わせて使用​​できます: http://jsfiddle.net/vEtv8/5/:not(:empty)

$("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();
于 2012-11-01T11:14:03.253 に答える
1
$('.wrapper').prevAll('p:empty').nextAll('p:empty').remove();
于 2012-11-01T11:23:37.130 に答える