Me gustaría mover un elemento DIV dentro de otro. Por ejemplo, quiero mover esto (incluidos todos los niños):
<div id="source">
...
</div>
dentro de esto:
<div id="destination">
...
</div>
para que tenga esto:
<div id="destination">
<div id="source">
...
</div>
</div>
javascript
jquery
html
Mark Richman
fuente
fuente
Respuestas:
¿Alguna vez has probado JavaScript simple ...
destination.appendChild(source);
?fuente
onclick
del fragmento de demostración con la palabra clavevar
en su intento de mejorar la publicación, ¡pero está mal!Es posible que desee utilizar la
appendTo
función (que se agrega al final del elemento):Alternativamente, podría usar la
prependTo
función (que se agrega al comienzo del elemento):Ejemplo:
Mostrar fragmento de código
fuente
it will be moved into the target (not cloned) and a new set consisting of the inserted element is returned
- api.jquery.com/appendtomi solución:
MOVERSE:
COPIAR:
Tenga en cuenta el uso de .detach (). Al copiar, tenga cuidado de no duplicar ID.
fuente
$('#nodeToMove').insertAfter('#insertAfterThisElement');
Acabo de usar:
Lo que agarré de aquí .
fuente
¿Qué pasa con una solución de JavaScript ?
Echale un vistazo.
fuente
Si el lugar
div
donde desea colocar su elemento tiene contenido dentro y desea que el elemento se muestre después del contenido principal:Si el lugar
div
donde desea colocar su elemento tiene contenido adentro y desea mostrar el elemento antes del contenido principal:Si el lugar
div
donde desea colocar su elemento está vacío, o si desea reemplazarlo por completo:Si desea duplicar un elemento antes de cualquiera de los anteriores:
fuente
Puedes usar:
Para insertar después,
Para insertar dentro de otro elemento,
fuente
Si desea una demostración rápida y más detalles sobre cómo mover elementos, pruebe este enlace:
http://html-tuts.com/move-div-in-another-div-with-jquery
Aquí hay un breve ejemplo:
Para mover ARRIBA un elemento:
Para moverse DESPUÉS de un elemento:
Para moverse dentro de un elemento, ARRIBA TODOS los elementos dentro de ese contenedor:
Para moverse dentro de un elemento, DESPUÉS DE TODOS los elementos dentro de ese contenedor:
fuente
Puede usar el siguiente código para mover el origen al destino
intente trabajar codepen
Mostrar fragmento de código
fuente
Antigua pregunta, pero llegó aquí porque necesito mover el contenido de un contenedor a otro, incluidos todos los oyentes de eventos .
jQuery no tiene una forma de hacerlo, pero la función DOM estándar appendChild sí.
El uso de appendChild elimina el .source y lo coloca en el destino, incluidos sus oyentes de eventos: https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild
fuente
También puedes probar:
Pero esto sobrescribirá completamente todo lo que tenga
#destination
.fuente
Noté una gran pérdida de memoria y una diferencia de rendimiento entre
insertAfter
&after
oinsertBefore
&before
.. Si tiene toneladas de elementos DOM, o necesita usarafter()
obefore()
dentro de un evento MouseMove , la memoria del navegador probablemente aumentará y las próximas operaciones se ejecutarán muy lentamente.La solución que acabo de experimentar es usar inserBefore en su lugar
before()
e insertAfter en su lugarafter()
.fuente
Puedes usar JavaScript puro, usando el
appendChild()
método ...Entonces puede hacer eso para hacer el trabajo, esto es lo que creé para usted, usar
appendChild()
, ejecutar y ver cómo funciona para su caso:fuente
En aras de la exhaustividad, hay otro enfoque
wrap()
owrapAll()
mencionado en este artículo . Por lo tanto, la pregunta del OP podría resolverse de esta manera (es decir, suponiendo<div id="destination" />
que aún no exista, el siguiente enfoque creará un contenedor de este tipo desde cero: el OP no tenía claro si el contenedor ya existe o no):Suena prometedor Sin embargo, cuando intentaba hacer
$("[id^=row]").wrapAll("<fieldset></fieldset>")
en múltiples estructuras anidadas como esta:Los envuelve correctamente
<div>...</div>
y<input>...</input>
PERO ALGUNA DEJA EL<label>...</label>
. Así que terminé usando el explícito en su$("row1").append("#a_predefined_fieldset")
lugar. Entonces, YMMV.fuente
mejora del tamaño sucio de la respuesta de Bekim Bacaj
fuente