jQuery: Umgebendes HTML Element (Wrapper) entfernen und Inhalte beibehalten

jQuery JavaScript Framework

Heute ein Mini-Script für die JQuery Freunde.

Ziel war es, ein Element von seinem umgebenden HTML-Element freizustellen, dabei jedoch die Inhalte beizubehalten.

Lösung war für mich das folgende Script:

  1.     /**
  2.     * Entfernt das äußerste Wrapper-Element innerhalb des Selektors.
  3.     * Beispiel: <a href="../target.html"><strong>Content</strong></a> ==>  <a href="../target.html">Content</a>
  4.     */
  5.    function removeChildWrapper(selector){
  6.            $(selector).each(function(){
  7.                    $(this).html($(this).children().html());
  8.            });
  9.    }

Vielleicht hilft es ja dem ein oder anderen auch bei derselben Problemstellung?
Oder habt ihr eine bessere Lösung, ggf. sogar eine passende jQuery Methode?

Ich freue mich über Anregungen und Verbesserungen.

Einordnung:

Kommentare

http://api.jquery.com/unwrap/

Hey, vielen Dank für den

Hey, vielen Dank für den Hinweis, das ist ja schon fast (vielleicht!) peinlich, dass ich das nicht gefunden habe.

An dieser Stelle ging es allerdings direkt um das Elternelement eines Text-Node. Ich werde morgen direkt mal testen, ob das dort auch funktioniert.

Beispiel:

  1. <p><strong>Text</strong></p>

<-- Strong entfernen! Wie lautet der Selektor mit unwrap?

Vielleicht:

  1. $('strong').children().unwrap();

?

Hat hier jemand Erfahrung?

Also spontan bekomme ich für

Also spontan bekomme ich für Textnodes keine funktionierende Lösung hin. Habt ihr eine?
(Ist dann erstmal doch nicht so peinlich, hoffe ich)

Eine kurze Alternative zu meiner Lösung ist aber vielleicht?

  1. $('.my-wrapper').replaceWith( $(this).contents() );

$('strong').replaceWith(this.

$('strong').replaceWith(this.childNodes);

Das müsste den Zweck erfüllen Smile

In meinem Test werden dadurch

In meinem Test werden dadurch gerade die Texte (Textnode Inhalte) auch entfernt. Klappt also nicht. Kannst du das Problem bestätigen?

Laut jQuery Api sollte sowas

Laut jQuery Api sollte sowas auch funktionieren. Aber ich hab jetzt weder das noch das letzte selbst probiert. Smile

$('strong').contents().unwrap();

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.

Weitere Informationen über Formatierungsoptionen