2013-04-02 13 views
11

Das ist mein HTML.Ausgewähltes Element auspacken Javascript oder Jquery

<span id="current" class="green unselctable" data-original-title="" title=""> 
    Lorem Ipsum is simply dummy 
</span> 

Ich bin mit mit $("#current") Auswahl aber wenn ich die unwrap Funktion jQuery verwenden die übergeordnete Tag entfernt wird.

Gibt es eine Möglichkeit, den Bereich in JavaScript oder jQuery zu entfernen, ohne die Zeichenfolge zu analysieren und an die Domäne anzuhängen?

Bearbeiten Ich möchte den Inhalt der div behalten. Ich möchte nur das Tag entfernt.

+2

Also willst du 'Lorem ...' noch existieren? – vol7ron

+0

Yup, alle HTML innerhalb des ausgewählten Elements, ohne einen weiteren Wrapper – trebor

Antwort

29

Sie können Kette contents() in unwrap():

$("#current").contents().unwrap(); 

contents() werden alle Kinder von #current zurückkehren, einschließlich Textknoten und unwrap() können angewendet werden, um Knoten in Text.

+0

Sehr schön - sollte die ausgewählte Antwort sein – vol7ron

+1

@ vol7ron Es wird aber in 9 Minuten, vielen Dank an euch beide – trebor

+0

In der [test] (http://jsperf.com/unwrap-vs-replacewith) Es scheint, als wäre replaceWith schneller, aber aus Gründen der Klarheit denke ich, dass ich besser unwrap mag. – vol7ron

4

Fiddle mit den zwei aktuellen Antworten - Wortspiel?

unwrap vs replaceWith

+0

Meine zwei Cent: Fragender sagte 'ohne den String zu analysieren und an das DOM anzuhängen', und einen String an' replaceWith() 'zu übergeben, tut genau das. Selbst dann könnte die Verwendung von 'html()' anstelle von 'text()' die Frage besser beantworten (wenn die ' 'endet, die andere Elemente enthält). Das heißt, Ihre Lösung ist wahrscheinlich schneller als meine, ja :) –

+1

Wenn Sie den Textknoten ziehen, ist es wirklich ein Parse? :) haha, aber ja. Ich denke, dass in beiden Fällen kopiert/angehängt werden kann - ich habe die jq-Quelle jedoch schon lange nicht mehr betrachtet – vol7ron

-1

Gerade diese gleiche Frage getroffen. Ich denke, das könnte marginal besser sein ... der gleiche Effekt, aber ich denke, dass jQuery weniger Magie machen muss, um das zu schaffen.

$("#current").replaceWith($("#current").contents()); 
Verwandte Themen