2

余分な空白を作成するタグ(具体的にはbr&p)をdivから削除したいと思います。divの内容は次のようになります。

<div>
  <br>
  <br>
  something
  <br>
  something
</div>

しかし、他の場合には、それらも問題ない可能性があります。

<div>
  something
  <br>
  something
</div>

jqueryで最初の2つのBRタグを削除する方法で説明されている解決策BRカウントがわかっている場合に機能します(たとえば、最初は常に単一のbr)。最初のBR量が0から無限の間の場合はどうですか?また、中央のBRは削除しないでください。

divの$.trimのようなものを探しています:)

4

3 に答える 3

2

以下は、テキストブロック内のすべての重複<br>要素(先頭を含む)を削除します。

​$("div"​​​​​​).html(function(i, html) {
    return $.grep(html.split(/<br\s*\/?>/), function(part) {
        return $.trim(part) !== "";
    }).join("<br>");
});

デモ:http: //jsfiddle.net/S8qeb/

<br>これにより、テキストブロックの先頭にあるすべての要素のみが削除されます。

$("div").html(function(i, html) {
    var textFound = false;
    return $.grep(html.split(/<br\s*\/?>/), function(part, i) {
        if ($.trim(part) !== "") textFound = true;
        return textFound;
    }).join("<br>");
});

デモ:http: //jsfiddle.net/S8qeb/1/ </ p>

于 2012-11-15T14:19:23.780 に答える
0

これを試して

var otherContent = false;
$('#yourdiv').contents().each(function() {
    if(!otherContent) {
        if(this.tagName.toLowerCase() == "br") {
            $(this).remove();
        } else {
            otherContent = true;
        }
    }
});
于 2012-11-15T14:19:53.280 に答える
0

試す

$('.trimmable > div').contents().each(function(i){
    var node = $(this),
        contents = $.trim(node.text());
    if (this.nodeName === 'BR' || contents === '') {
        node.remove();
    } else {
        return false;
    }
});

http://jsfiddle.net/gaby/3TnM​​T/1/でのデモ

于 2012-11-15T14:20:55.517 に答える