Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clone Element without Children

Is there a way to copy an element without copying it's children?

My goal is to duplicate a table, along with all classes, inline styles, etc. But I do not want to copy any of the table element's children.

I realize I could copy the entire table and then remove the children from the copy. But I want to minimize screen flicker and I seem to recall there are problems manipulating elements before they are visible in the DOM.

Any suggestions?

like image 722
Jonathan Wood Avatar asked Mar 18 '14 03:03

Jonathan Wood


2 Answers

Have you considered using native cloneNode? The argument controls whether children should be cloned as well.

var clone = table.cloneNode(false);

This does not clone event handlers though. I'm not sure about styles set via the DOM API (probably not).

like image 59
Felix Kling Avatar answered Nov 19 '22 12:11

Felix Kling


use .cloneNode

var t = document.createElement("table");
t.setAttribute("style",'background:#0F0; font-size:12px;');
var tr = document.createElement("tr");
var td = document.createElement("td");
td.appendChild(document.createElement("input"));
tr.appendChild(td);
t.appendChild(tr);
var clone = t.cloneNode();
console.log(clone);
//outputs 
//<table style="background:#0F0; font-size:12px;"></table>
like image 32
Patrick Evans Avatar answered Nov 19 '22 11:11

Patrick Evans