2

我想从 div 中删除额外的创建空格的标签(特别是 br & p)。div 内容可能如下:

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

但在其他情况下,它们也可以很好:

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

如何使用 jquery 删除前两个 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

尝试

$('.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 回答
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 回答