Element mit jQuery entfernen, aber Text belassen

Lesezeit: 2 Minuten

Ich habe etwas HTML, das so aussieht:

<div>
    <span class="red">red text</span> some more text <span class="blue">blue text</span>
</div>

Was ich tun möchte, ist jQuery zu verwenden, um alle Spans innerhalb des div unabhängig von der angehängten Klasse zu entfernen, aber den Text innerhalb der span-Tags zurückzulassen. Das Endergebnis wird also sein:

<div>
    red text some more text blue text
</div>

Ich habe versucht, die zu verwenden unwrap() Methode, aber es entpackt das div. Ich habe auch versucht, die Elemente zu entfernen, aber das entfernt die Elemente und ihren Text.

Benutzer-Avatar
Samson

jQuery 1.4+

Sie möchten die Spanne nicht auspacken, Sie möchten ihren Inhalt auspacken:

$("span").contents().unwrap();

Online-Demo: http://jsbin.com/iyigi/edit

jQuery 1.2+

Für frühere Versionen von jQuery können Sie Folgendes tun:

$("span").replaceWith(function () {
    return $(this).text();
});

Online-Demo: http://jsbin.com/iyigi/40/edit

  • Aus der Dokumentation: Entfernen Sie die übergeordneten Elemente des Satzes übereinstimmender Elemente aus dem DOM und lassen Sie die übereinstimmenden Elemente an ihrer Stelle. Also ich denke so soll es funktionieren. Wenn es eine Möglichkeit gäbe, den Textknoten auszuwählen, könnten Sie Unwrap verwenden.

    – Joel

    22. Februar 2010 um 2:01 Uhr

  • Scheint eigentlich nicht zu funktionieren, habe es nur mit dem Beispiel-HTML von oben versucht. BEARBEITEN: Ich habe 1.3.2 verwendet, erraten Sie die Zeit für ein Upgrade!

    – Erich

    22. Februar 2010 um 2:07 Uhr


  • Erik, vergewissere dich, dass du jQuery 1.4+ verwendest

    – Samson

    22. Februar 2010 um 2:08 Uhr

  • Es löscht alle Span-Tags: P

    – Harshit Gupta

    29. März 2013 um 16:22 Uhr


  • @harshitgupta Es sollte nur die Tags durch ihren Inhalt ersetzen. Ich habe gerade die Demo erneut überprüft und sie scheint wie angekündigt zu funktionieren. Erleben Sie einen Totalverlust von Inhalten?

    – Samson

    29. März 2013 um 21:21 Uhr


Wäre nicht einfach $('#my-div').text ($('#my-div').text ()) ausreichen, ohne auf das Auspacken zurückzugreifen?

Benutzer-Avatar
Tigertron

$(mydiv).html($(mydiv).text()) 

sollte den Trick machen.

  • Wenn der Text aus .text() enthält maskiertes HTML, dann mit .html(text) wird als tatsächliches HTML gerendert.

    – Uigurisches Leben ist wichtig

    30. Juni 2014 um 18:52 Uhr


1179240cookie-checkElement mit jQuery entfernen, aber Text belassen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy