Eu gostaria de mover um elemento DIV para dentro de outro. Por exemplo, eu quero mover isso (incluindo todos os filhos):
<div id="source">
...
</div>
nisso:
<div id="destination">
...
</div>
para que eu tenha isso:
<div id="destination">
<div id="source">
...
</div>
</div>
javascript
jquery
html
Mark Richman
fonte
fonte
Respostas:
Já tentou JavaScript simples ...
destination.appendChild(source);
?fonte
onclick
do snippet de demonstração com a palavra-chavevar
em sua tentativa de aprimorar a publicação - mas isso está errado!Você pode querer usar a
appendTo
função (que adiciona ao final do elemento):Como alternativa, você pode usar a
prependTo
função (que adiciona ao início do elemento):Exemplo:
Mostrar snippet de código
fonte
it will be moved into the target (not cloned) and a new set consisting of the inserted element is returned
- api.jquery.com/appendtominha solução:
MOVER:
CÓPIA DE:
Observe o uso de .detach (). Ao copiar, tenha cuidado para não duplicar IDs.
fonte
$('#nodeToMove').insertAfter('#insertAfterThisElement');
Eu apenas usei:
Que eu peguei daqui .
fonte
Que tal uma solução JavaScript ?
Confira.
fonte
Se o
div
local em que você deseja colocar seu elemento possui conteúdo e você deseja que o elemento seja exibido após o conteúdo principal:Se o
div
local em que você deseja colocar seu elemento possui conteúdo e você deseja mostrar o elemento antes do conteúdo principal:Se o
div
local em que você deseja colocar seu elemento estiver vazio, ou você desejar substituí- lo totalmente:Se você deseja duplicar um elemento antes de qualquer uma das opções acima:
fonte
Você pode usar:
Para inserir depois,
Para inserir dentro de outro elemento,
fonte
Se você quiser uma demonstração rápida e mais detalhes sobre como mover elementos, tente este link:
http://html-tuts.com/move-div-in-another-div-with-jquery
Aqui está um pequeno exemplo:
Para mover ACIMA de um elemento:
Para mover APÓS um elemento:
Para mover-se dentro de um elemento, ACIMA DE TODOS os elementos dentro desse contêiner:
Para mover-se dentro de um elemento, APÓS TODOS os elementos dentro desse contêiner:
fonte
Você pode usar o seguinte código para mover a origem para o destino
tente trabalhar codepen
Mostrar snippet de código
fonte
Pergunta antiga, mas cheguei aqui porque preciso mover o conteúdo de um contêiner para outro, incluindo todos os ouvintes do evento .
O jQuery não tem como fazê-lo, mas a função DOM padrão appendChild possui.
O uso de appendChild remove o .source e o coloca no destino, incluindo seus ouvintes de eventos: https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild
fonte
Você também pode tentar:
Mas isso substituirá completamente tudo o que você possui
#destination
.fonte
Percebi uma grande perda de memória e diferença de desempenho entre
insertAfter
&after
ouinsertBefore
&before
.. Se você possui vários elementos DOM ou precisa usarafter()
oubefore()
dentro de um evento MouseMove , a memória do navegador provavelmente aumentará e as próximas operações serão muito lentas.A solução que acabei de experimentar é usar o insertBefore
before()
e depois o insertAfterafter()
.fonte
Você pode usar JavaScript puro, usando o
appendChild()
método ...Para que você possa fazer isso, é isso que eu criei para você, usando
appendChild()
, execute e veja como funciona no seu caso:fonte
Por uma questão de integridade, há outra abordagem
wrap()
ouwrapAll()
mencionada neste artigo . Portanto, a questão do OP poderia ser resolvida com isso (ou seja, assumindo<div id="destination" />
que ainda não exista, a seguinte abordagem criará esse invólucro do zero - o OP não ficou claro se o invólucro já existe ou não):Parece promissor. No entanto, quando eu estava tentando fazer
$("[id^=row]").wrapAll("<fieldset></fieldset>")
em várias estruturas aninhadas como esta:Ela envolve corretamente os
<div>...</div>
e<input>...</input>
mas de alguma forma deixa de fora a<label>...</label>
. Então acabei usando o explícito$("row1").append("#a_predefined_fieldset")
. Então, YMMV.fonte
melhoria de tamanho sujo da resposta de Bekim Bacaj
fonte