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 clon
David Morton had the right answer back in 2010, but I just wanted to update it. jQuery removed .andSelf()
in 3.0.0 (see adeneo's answer). The latest and greatest (as of this writing) is .addBack()
. So the line would be:
$("#current_users").clone(false).find('*[id]').addBack().each(function () { $(this).attr('id', function(i , id) { return id + "_cloned" + ruleId}) });
If you need to get it back as a string, which was the case for me, add .get(0).outerHTML;
to the end.
$("#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.
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.