JQuery-删除中间元素后合并
假设我的HTML如下所示JQuery-删除中间元素后合并,jquery,html,Jquery,Html,假设我的HTML如下所示 <p>a<span>b</span>c</p> 我的HTML看起来像这样 <p> "a" "c" </p> “a” “c” 如何将这两个部分合并在一起,使我的HTML看起来像ac 结果: <p>ac</p> ac 这里有一个,它只影响连接任意两个连续节点的文本节点 $("span").click(function() { var parent = thi
<p>a<span>b</span>c</p>
我的HTML看起来像这样
<p>
"a"
"c"
</p>
“a”
“c”
如何将这两个部分合并在一起,使我的HTML看起来像ac
结果:
<p>ac</p>
ac
这里有一个,它只影响连接任意两个连续节点的文本节点
$("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);
}
}
});
}
保持绑定 我知道这很古老,但这就是它的用途: normalize()方法将指定的节点及其所有子树放入“normalize”形式。在规范化子树中,子树中没有文本节点为空,也没有相邻的文本节点
你为什么如此执着于此?称之为强迫症和好奇心的结合:)我会给出最好的答案->
$(p.html('ac')代码>嗯,那是。。。令人烦恼的简单。我相信所有子节点的绑定都将消失。对不起,不可能是那样的easy@Alexander这是一个限制。不过,通常不会有直接绑定(特别是在事件委派非常容易的情况下)。@JanDvorak,我不能附和
<p>ac</p>
$("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);
$('p').get(0).normalize()