2010-02-25 22 views
23

使用JQuery,可以像這樣克隆一個Div並更改爲它的ID添加一個新的標識符,它的所有子ID都是?克隆一個div,並更改它的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斯奈德

回答

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

如果有任何附加的看你的事件。如果他們依靠ID,你必須修復它們。

+1

謝謝,這正是我一直在尋找的。它效果很好。 – 2010-02-25 02:47:22

+4

你可以通過使用'attr()'函數形式使頭髮更加乾爽:'$(this).attr('id',function(i,id){return id +「_ cloned」;});'' – Phrogz 2011-02-18 20:02:32

+1

謝謝。你的代碼保存了我的數百行。 :) – Roopendra 2013-07-31 09:24:19

1

除非您確實需要通過代碼唯一標識每個克隆的DIV,否則我會用可重用類替換您的ID。否則,大衛莫頓的答案看起來可能會有所斬獲。

+0

是的,我同意。對於我在做什麼,我需要獨特性:)感謝您的建議。 – 2010-02-25 02:47:57

相關問題