如何使用jQuery删除div开头的额外空格?

时间:2012-11-15 14:11:51

标签: jquery

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

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

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

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

How to remove the first two BR tags with jquery?处描述的解决方案如果BR计数已知(例如,开头时始终为单一br),则可以使用。如果开头的BR数量在0到无限之间怎么样?此外,不应删除中间的BR。

为div找到类似$ .trim的东西:)

3 个答案:

答案 0 :(得分:2)

以下内容将删除文本块中所有重复的<br>元素(包括在开头):

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

DEMO: 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>");
});

DEMO: http://jsfiddle.net/S8qeb/1/

答案 1 :(得分:0)

试试这个

var otherContent = false;
$('#yourdiv').contents().each(function() {
    if(!otherContent) {
        if(this.tagName.toLowerCase() == "br") {
            $(this).remove();
        } else {
            otherContent = true;
        }
    }
});

答案 2 :(得分: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/3TnMT/1/

演示