2010-02-25 2 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> 

및 재사용 가능한 클래스 선언?

감사합니다,

Tegan 스나이더

답변

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

와 연결된이있는 경우 이벤트를보세요. ID에 의존하는 경우 수정해야합니다.

+1

내가 찾던 고마워. 그것은 위대한 작품. –

+4

당신은'attr()'의 함수 형태를 사용하여 머리카락을 더 건조하게 만들 수 있습니다 : $ (this) .attr ('id', function (i, id) {return id + "_cloned";});' – Phrogz

+1

감사. 코드가 수백 줄의 코드를 저장합니다. :) – Roopendra

1

실제로 코드를 통해 복제 된 DIV를 고유하게 식별해야하는 경우가 아니면 재사용 가능한 클래스로 ID를 대체합니다. 그렇지 않으면 David Morton의 답변이 트릭을 수행하는 것처럼 보입니다.

+0

그래, 나는 동의한다. 내가하고있는 일을 위해 나는 유일성이 필요하다. 당신의 제안에 감사드립니다. –

관련 문제