繁体   English   中英

克隆div并更改它的ID,并将其所有子项都改为唯一

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

使用JQuery可以像这样克隆一个Div并更改为它的ID添加一个新的标识符以及所有它的子ID?

例如,我希望能够克隆这个:

<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>

看起来像这样:

<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>

或者我应该重新考虑我的结构并使用rel属性和可重用的类声明?

谢谢,

Tegan Snyder

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

如果有附件,请观看您的活动。 如果他们依赖于ID,你将不得不修复它们。

除非你真的需要通过代码唯一地识别每个克隆的DIV,否则我会用可重用的类替换你的ID。 否则,David Morton的答案看起来可能会成功。

大卫莫顿在2010年得到了正确答案,但我只是想更新它。 jQuery在3.0.0中删除了.andSelf() (参见adeneo的回答 )。 最新最好的(截至本文撰写时)是.addBack() 所以这条线将是:

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

如果您需要将其作为字符串取回,我就是这种情况,请添加.get(0).outerHTML; 到最后。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM