Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clone a div and change the ID's of it and all it's children to be unique

Tags:

Using JQuery it possible to clone a Div like this and change add a new identifier to it's ID and all it's children ID's?

For instance I'd like to be able to clone this:

<div id="current_users"> <table id="user_list"> <tr id="user-0"> <td id="first_name-0">Jane</td> <td id="last_name-0">Doe</td> </tr> <tr id="user-1"> <td id="first_name-1">John</td> <td id="last_name-1">Doe</td> </tr> </table> </div> 

And have it look like this:

<div id="current_users_cloned"> <table id="user_list_cloned"> <tr id="user-0_cloned"> <td id="first_name-0_cloned">Jan</td> <td id="last_name-0_cloned">Doe</td> </tr> <tr id="user-1_cloned"> <td id="first_name-1_cloned">John</td> <td id="last_name-1_cloned">Doe</td> </tr> </table> </div> 

Or should I just rethink my structure and use rel attributes and reusable class declarations?

Thanks,

Tegan Snyder

like image 481
Tegan Snyder Avatar asked Feb 25 '10 02:02

Tegan Snyder


People also ask

How do I clone a div with another ID?

To clone an element and change its id: Use the cloneNode() method to clone the element. Set a different id property on the element. For example, clone.id = 'another-id' .

How do I clone a div?

To clone a div and change its id with JavaScript, we can use the cloneNode method on the div. Then we can set the id property of the cloned element to set the ID. to add the div.


2 Answers

$("#current_users").clone(false).find("*[id]").andSelf().each(function() { $(this).attr("id", $(this).attr("id") + "_cloned"); }); 

And watch your events if there are any attached. You'll have to fix them up if they rely on ids.

like image 167
David Morton Avatar answered Sep 20 '22 19:09

David Morton


Unless you actually need to uniquely identify each of those cloned DIV's via code, I would replace your ID's with reusable classes. Otherwise, David Morton's answer looks like it might do the trick.

like image 32
jrista Avatar answered Sep 18 '22 19:09

jrista