I would like to move one DIV element inside another. For example, I want to move this (including all children):
<div id="source">
...
</div>
into this:
<div id="destination">
...
</div>
so that I have this:
<div id="destination">
<div id="source">
...
</div>
</div>
You can use:
To Insert After,
To Insert inside another element,
I just used:
Which I grabbed from here.
For the sake of completeness, there is another approach
wrap()
orwrapAll()
mentioned in this article. So the OP's question could possibly be solved by this (that is, assuming the<div id="destination" />
does not yet exist, the following approach will create such a wrapper from scratch - the OP was not clear about whether the wrapper already exists or not):It sounds promising. However, when I was trying to do
$("[id^=row]").wrapAll("<fieldset></fieldset>")
on multiple nested structure like this:It correctly wraps those
<div>...</div>
and<input>...</input>
BUT SOMEHOW LEAVES OUT the<label>...</label>
. So I ended up use the explicit$("row1").append("#a_predefined_fieldset")
instead. So, YMMV.You can use following code to move source to destination
try working codepen
If you want a quick demo and more details about how you move elements, try this link:
http://html-tuts.com/move-div-in-another-div-with-jquery
Here is a short example:
To move ABOVE an element:
To move AFTER an element:
To move inside an element, ABOVE ALL elements inside that container:
To move inside an element, AFTER ALL elements inside that container:
I noticed huge memory leak & performance difference between insertAfter & after or insertBefore & before .. If you have tons of DOM elements, or you need to use after() or before() inside a MouseMove event, the browser memory will probably increase and next operations will run really slow. The solution I've just experienced is to use inserBefore instead before() and insertAfter instead after().