Ich möchte ein DIV-Element in ein anderes verschieben. Zum Beispiel möchte ich dies verschieben (einschließlich aller Kinder):
<div id="source">
...
</div>
das sehr gut finden:
<div id="destination">
...
</div>
damit ich das habe:
<div id="destination">
<div id="source">
...
</div>
</div>
javascript
jquery
html
Mark Richman
quelle
quelle
Antworten:
Haben Sie schon einmal einfaches JavaScript ausprobiert ...
destination.appendChild(source);
?quelle
onclick
des Demo-Snippets das Schlüsselwort vorangestelltvar
, um den Beitrag zu verbessern - aber das ist falsch!Möglicherweise möchten Sie die
appendTo
Funktion verwenden (die am Ende des Elements hinzugefügt wird):Alternativ können Sie die
prependTo
Funktion verwenden (die am Anfang des Elements hinzugefügt wird):Beispiel:
Code-Snippet anzeigen
quelle
it will be moved into the target (not cloned) and a new set consisting of the inserted element is returned
- api.jquery.com/appendtomeine Lösung:
BEWEGUNG:
KOPIEREN:
Beachten Sie die Verwendung von .detach (). Achten Sie beim Kopieren darauf, dass Sie keine IDs duplizieren.
quelle
$('#nodeToMove').insertAfter('#insertAfterThisElement');
Ich habe gerade verwendet:
Was ich von hier gepackt habe .
quelle
Was ist mit einer JavaScript- Lösung?
Hör zu.
quelle
Wenn der Ort, an
div
dem Sie Ihr Element platzieren möchten, Inhalt enthält und das Element nach dem Hauptinhalt angezeigt werden soll:Wenn der Ort, an
div
dem Sie Ihr Element platzieren möchten, Inhalt enthält und Sie das Element vor dem Hauptinhalt anzeigen möchten :Wenn der Ort, an
div
dem Sie Ihr Element platzieren möchten, leer ist oder Sie es vollständig ersetzen möchten :Wenn Sie ein Element vor einem der oben genannten Elemente duplizieren möchten:
quelle
Sie können verwenden:
Einfügen nach,
Um in ein anderes Element einzufügen,
quelle
Wenn Sie eine kurze Demo und weitere Details zum Verschieben von Elementen wünschen, versuchen Sie diesen Link:
http://html-tuts.com/move-div-in-another-div-with-jquery
Hier ist ein kurzes Beispiel:
So bewegen Sie sich über ein Element:
So bewegen Sie sich NACH einem Element:
Um sich innerhalb eines Elements zu bewegen, ÜBER ALLEN Elementen in diesem Container:
Um sich innerhalb eines Elements zu bewegen, NACH ALLEN Elementen in diesem Container:
quelle
Sie können den folgenden Code verwenden, um die Quelle zum Ziel zu verschieben
Versuchen Sie, Codepen zu arbeiten
Code-Snippet anzeigen
quelle
Alte Frage, aber ich bin hierher gekommen, weil ich Inhalte von einem Container in einen anderen verschieben muss, einschließlich aller Ereignis-Listener .
jQuery hat keine Möglichkeit dazu, aber die Standard-DOM-Funktion appendChild.
Durch die Verwendung von appendChild wird die .source entfernt und in das Ziel einschließlich der Ereignis-Listener eingefügt: https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild
quelle
Sie können auch versuchen:
Dies wird jedoch alles, was Sie haben, vollständig überschreiben
#destination
.quelle
Ich habe einen großen Speicherverlust und Leistungsunterschied zwischen
insertAfter
&after
oderinsertBefore
&before
festgestellt. Wenn Sie Tonnen von DOM-Elementen haben oder ein MouseMove-Ereignis verwenden müssenafter()
oder sichbefore()
darin befinden , wird der Browserspeicher wahrscheinlich größer und die nächsten Vorgänge werden sehr langsam ausgeführt.Die Lösung, die ich gerade erlebt habe, besteht darin, stattdessen
before()
inserBefore und stattdessen insertAfter zu verwendenafter()
.quelle
Sie können reines JavaScript verwenden, indem Sie die
appendChild()
Methode ...Damit Sie den Job erledigen können, habe ich Folgendes für Sie erstellt, verwendet
appendChild()
, ausgeführt und gesehen, wie es für Ihren Fall funktioniert:quelle
Der Vollständigkeit halber gibt es einen anderen Ansatz
wrap()
oderwrapAll()
wird in diesem Artikel erwähnt . Die Frage des OP könnte also möglicherweise dadurch gelöst werden (das heißt, unter der Annahme, dass der<div id="destination" />
Wrapper noch nicht existiert, wird der folgende Ansatz von Grund auf neu erstellt - dem OP war nicht klar, ob der Wrapper bereits existiert oder nicht):Es klingt vielversprechend. Als ich jedoch versuchte, dies
$("[id^=row]").wrapAll("<fieldset></fieldset>")
mit mehreren verschachtelten Strukturen wie folgt zu tun :Es verpackt diese korrekt
<div>...</div>
und<input>...</input>
ABER VERLÄSST AUF irgendeine Weise die<label>...</label>
. Also habe ich$("row1").append("#a_predefined_fieldset")
stattdessen das Explizite verwendet. Also, YMMV.quelle