2

私のHTMLが次のようになっているとしましょう

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

$("span").remove();

私のHTMLは次のようになります

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

これらの2つの部分をマージして、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

これが1つです。これは、2つの連続するノードを結合するテキストノードにのみ影響します。

$("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 に答える
0

私はこれが古いことを知っています、しかしこれは何Node.normalizeのためにあるのですか:

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

Node.normalize()メソッドは、指定されたノードとそのすべてのサブツリーを「正規化された」形式にします。正規化されたサブツリーでは、サブツリー内のテキストノードは空でなく、隣接するテキストノードもありません。

于 2015-02-24T20:55:47.150 に答える