What is the most recommended/efficient way to insert a node in the middle of a tree.
How to transpose this
<svg id="root" ... >
<g id="child1">...</g>
<text id="child2">...</text>
<rect id="child3">...</rect>
...
</svg>
to this
<svg id="root" ... >
<g id="parent">
<g id="child1">...</g>
<text id="child2">...</text>
<rect id="child3">...</rect>
...
</g>
</svg>
@jsFiddle
I have tried
var $parent = $("g").attr("id","parent");
var $root = $("#root");
$root.contents().each(function(){
$child=$(this);
$child.remove();
$parent.append($child);
});
$root.append($parent);
I have also tried using the moveTo method in this answer
(function($){
$.fn.moveTo = function(selector){
return this.each(function(){
var cl = $(this).clone();
$(cl).appendTo(selector);
$(this).remove();
});
};
})(jQuery);
$root.contents().each(function() {
$(this).moveTo($parent);
});
All of these methods work in simple scenarios but when the tree is really massive, the browser simply hangs, is there a more efficient way to perform this?
I am looking for a jQuery or pure javascript solution.