假设我的 HTML 看起来像这样
<p>a<span>b</span>c</p>
后
$("span").remove();
我的 HTML 看起来像这样
<p>
"a"
"c"
</p>
如何将这两个部分合并在一起,使我的 HTML 看起来像<p>ac</p>
?
$("span").remove();
$("p").html($("p").html());
结果:
<p>ac</p>
我知道这是旧的,但这Node.normalize
就是为了:
$('p').get(0).normalize()
Node.normalize() 方法将指定节点及其所有子树放入“规范化”形式。在规范化子树中,子树中没有文本节点是空的,也没有相邻的文本节点。
这是一个,它只影响连接任意两个连续节点的文本节点。
$("span").click(function() {
var parent = this.parentNode;
$(this).remove();
normalize(parent);
});
function normalize(element){
var contents = $(element).contents();
contents.each(function(i){console.log(this.nodeType);
if (this.nodeType == 3 && i > 0){
var prev = contents[i-1];
if (prev.nodeType == 3){
this.nodeValue += prev.nodeValue;
prev.parentNode.removeChild(prev);
}
}
});
}
var p = $('p'),
p2 = p.clone(true);
p2.find('span').remove();
p2.text(p2.text());
p.parent().empty().append(p2);
保持绑定!