我想从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的东西:)
答案 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>");
});
答案 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;
}
});
演示