Je voudrais déplacer un élément DIV à l'intérieur d'un autre. Par exemple, je veux déplacer ceci (y compris tous les enfants):
<div id="source">
...
</div>
en cela:
<div id="destination">
...
</div>
de sorte que j'ai ceci:
<div id="destination">
<div id="source">
...
</div>
</div>
javascript
jquery
html
Mark Richman
la source
la source
Réponses:
Avez-vous déjà essayé du JavaScript simple ...
destination.appendChild(source);
?la source
onclick
de l'extrait de démo avec le mot-clévar
dans sa tentative d'améliorer la publication - mais c'est faux!Vous voudrez peut-être utiliser la
appendTo
fonction (qui ajoute à la fin de l'élément):Alternativement, vous pouvez utiliser la
prependTo
fonction (qui ajoute au début de l'élément):Exemple:
Afficher l'extrait de code
la source
it will be moved into the target (not cloned) and a new set consisting of the inserted element is returned
- api.jquery.com/appendtoma solution:
BOUGE TOI:
COPIE:
Notez l'utilisation de .detach (). Lors de la copie, veillez à ne pas dupliquer les ID.
la source
$('#nodeToMove').insertAfter('#insertAfterThisElement');
Je viens d'utiliser:
Que j'ai attrapé d' ici .
la source
Et une solution JavaScript ?
Vérifiez-le.
la source
Si l'
div
endroit où vous souhaitez placer votre élément contient du contenu et que vous souhaitez que l'élément s'affiche après le contenu principal:Si l'
div
emplacement où vous souhaitez placer votre élément contient du contenu et que vous souhaitez afficher l'élément avant le contenu principal:Si l'
div
endroit où vous souhaitez placer votre élément est vide, ou si vous souhaitez le remplacer entièrement:Si vous souhaitez dupliquer un élément avant l'un des éléments ci-dessus:
la source
Vous pouvez utiliser:
Pour insérer après,
Pour insérer à l'intérieur d'un autre élément,
la source
Si vous souhaitez une démonstration rapide et plus de détails sur la façon dont vous déplacez les éléments, essayez ce lien:
http://html-tuts.com/move-div-in-another-div-with-jquery
Voici un petit exemple:
Pour se déplacer au-dessus d'un élément:
Pour se déplacer APRÈS un élément:
Pour se déplacer à l'intérieur d'un élément, AU-DESSUS DE TOUS les éléments à l'intérieur de ce conteneur:
Pour se déplacer à l'intérieur d'un élément, APRÈS TOUS les éléments à l'intérieur de ce conteneur:
la source
Vous pouvez utiliser le code suivant pour déplacer la source vers la destination
essayez de travailler codepen
Afficher l'extrait de code
la source
Vieille question mais arrivée ici parce que je dois déplacer le contenu d'un conteneur à un autre, y compris tous les écouteurs d'événements .
jQuery n'a pas de moyen de le faire, mais la fonction DOM standard appendChild en a un.
L'utilisation d'appendChild supprime le .source et le place dans la cible, y compris ses écouteurs d'événements: https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild
la source
Vous pouvez également essayer:
Mais cela écrasera complètement tout ce que vous avez
#destination
.la source
J'ai remarqué une énorme fuite de mémoire et une différence de performances entre
insertAfter
&after
ouinsertBefore
&before
.. Si vous avez des tonnes d'éléments DOM, ou si vous devez utiliserafter()
ou à l'before()
intérieur d'un événement MouseMove , la mémoire du navigateur augmentera probablement et les opérations suivantes s'exécuteront très lentement.La solution que je viens de découvrir est d'utiliser à la place
before()
inserBefore et insertAfter à la placeafter()
.la source
Vous pouvez utiliser du JavaScript pur, en utilisant la
appendChild()
méthode ...Vous pouvez donc faire cela pour faire le travail, voici ce que j'ai créé pour vous, en utilisant
appendChild()
, en exécutant et en voyant comment cela fonctionne pour votre cas:la source
Par souci d'exhaustivité, il existe une autre approche
wrap()
ouwrapAll()
mentionnée dans cet article . Donc, la question de l'OP pourrait éventuellement être résolue par cela (c'est-à-dire, en supposant que le<div id="destination" />
n'existe pas encore, l'approche suivante créera un tel wrapper à partir de zéro - l'OP n'était pas clair quant à savoir si le wrapper existe déjà ou non):Cela semble prometteur. Cependant, lorsque j'essayais de faire
$("[id^=row]").wrapAll("<fieldset></fieldset>")
sur plusieurs structures imbriquées comme ceci:Il enveloppe correctement ceux-ci
<div>...</div>
et<input>...</input>
MAIS QUELQUES-UNS LAISSENT<label>...</label>
. J'ai donc fini par utiliser l'explicite à la$("row1").append("#a_predefined_fieldset")
place. Alors, YMMV.la source
amélioration de la taille sale de la réponse de Bekim Bacaj
la source