2

假设我的 HTML 看起来像这样

<p>a<span>b</span>c</p>

$("span").remove();

我的 HTML 看起来像这样

<p>
"a"
"c"
</p>

如何将这两个部分合并在一起,使我的 HTML 看起来像<p>ac</p>

jsfiddle

4

4 回答 4

3
$("span").remove();
$("p").html($("p").html());
​

结果:

<p>ac</p>
于 2012-12-07T18:34:26.457 回答
0

我知道这是旧的,但这Node.normalize就是为了:

$('p').get(0).normalize()

Node.normalize() 方法将指定节点及其所有子树放入“规范化”形式。在规范化子树中,子树中没有文本节点是空的,也没有相邻的文本节点。

于 2015-02-24T20:55:47.150 回答
0

这是一个,它只影响连接任意两个连续节点的文本节点。

$("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);
            }
        }
    });
}

http://jsfiddle.net/mowglisanu/dgBwc/13/

于 2012-12-07T18:45:22.927 回答
0
var p  = $('p'),
    p2 = p.clone(true);
    p2.find('span').remove();
    p2.text(p2.text());
    p.parent().empty().append(p2);

小提琴

保持绑定!

于 2012-12-07T18:55:08.573 回答