ein Element auspacken sollte ein Elternteil haben. Sie erstellen ein DOM-Fragment und versuchen, es auszupacken. Aber es hat keine Eltern.
Sag mal, gibt es einige dom:
<button>unwrap</button>
<div class="outer"></div>
Mit dem Elternteil anstelle Unwraping geht ganz gut:
var inner = '<span class="inner">test html</span>',
$outer = $('.outer');
// First you would want your element to get a parent.
$outer.html(inner);
// Then unwrap it
$('button').on('click', function() {
$('.inner').unwrap();
});
hier ist der fiddle
Also, wenn Sie die äußere entfernen möchten Spannweite, sollten Sie die innere zielen und es wird auspacken.
Für das aktualisierte Fragment: .Clone() kopiert keine Eltern, es kopiert nur das Element und alle seine Nachkommen. Wenn Sie also clone verwenden, erstellen Sie am ausgewählten Element ein separates Fragment mit root.
.unwrap() entfernt die übergeordneten Elemente der übereinstimmenden Elemente. Um die innere Spanne auszupacken, müssen Sie sie mit jQuery auswählen.
<div class="outer"></div>
js
var html = "<span><span class='inner'>test html </span></span>";
var $html = $(html);
var unwraped = $html.find('.inner').unwrap();
$('.outer').html(unwraped);
anderen fiddle
Upd:
Es Unterschied ist das DOM zwischen überquert und es ändern. Wenn Sie .find() verwenden, durchlaufen Sie (von Element zu Element wechselnd). Die Struktur des DOM-Baums bleibt gleich. Wenn Sie .unwrap() verwenden, ändern Sie die Struktur (Entfernen eines Elements aus dem DOM).
Sie haben es auszupacken zweimal – nmnsud