ツリーの途中にノードを挿入する最も推奨/効率的な方法は何ですか?
これを転置する方法
<svg id="root" ... >
<g id="child1">...</g>
<text id="child2">...</text>
<rect id="child3">...</rect>
...
</svg>
これに
<svg id="root" ... >
<g id="parent">
<g id="child1">...</g>
<text id="child2">...</text>
<rect id="child3">...</rect>
...
</g>
</svg>
私が試してみました
var $parent = $("g").attr("id","parent");
var $root = $("#root");
$root.contents().each(function(){
$child=$(this);
$child.remove();
$parent.append($child);
});
$root.append($parent);
この回答で moveTo メソッドも使用してみました
(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);
});
これらの方法はすべて単純なシナリオで機能しますが、ツリーが非常に巨大な場合、ブラウザがハングするだけです。これを実行するより効率的な方法はありますか?
jQuery または純粋な JavaScript ソリューションを探しています。