我的段落包含文字和<br>
标签。我想删除第一个<br>
标记,如果它出现在任何段落中的文本之前。
像这样:
<p>
<br>
Lorem Ipsum is dummy text.
</p>
我想这样:
<p>
Lorem Ipsum is dummy text.
</p>
答案 0 :(得分:3)
您可以检查第一个childNode
是否为<br>
并删除/隐藏如下:
$('p').each(function() {
var first = this.childNodes[0];
while((!first.tagName && $.trim(first.textContent) == '') || (first.tagName && first.tagName.toLowerCase() == 'br')) {
this.removeChild(first);
first = (this.childNodes && this.childNodes.length > 0) ? this.childNodes[0] : null;
}
});
演示: http://jsfiddle.net/makZ7/1/
更新了演示(同时删除了所有前导空文本节点): http://jsfiddle.net/WQ9f3/5/
输入:
<p><br/>Hello<br/>World</p>
<p><br/>Hello<br/>World<br/>Hey!</p>
输出:
<p>Hello<br/>World</p>
<p>Hello<br/>World<br/>Hey!</p>
答案 1 :(得分:1)
尝试类似
的内容$("p br:first-child").filter(function () {
var prev = this.previousSibling;
return prev == null || $.trim(prev.nodeValue) == ''
}).remove();
演示:Fiddle
答案 2 :(得分:0)
也可以使用正则表达式删除<br/>
标记。
<强> JsFiddle 强>
$(document).ready(function () {
var exp = /^\s*?(<br(\/>|>))/gi;
$('p').each(function (idx, elm) {
elm = $(elm);
elm.html(elm.html().replace(exp, ''));
});
});
代码检查每个p
标记的内部html,忽略任何空格,用空字符串替换文本开头的<br>
或<br/>
标记。
答案 3 :(得分:-1)