JQuery-删除中间元素后合并

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

假设我的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 = 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()