2010-02-15 6 views
0

jQuery의 .clone()이 작동하는 것처럼 보입니다. 일단 복제 된 오브젝트를 어딘가에 삽입하면 원래 오브젝트를 다시 복제하지 않고 다시 삽입 할 수 없습니다. 예를 들어, 당신은이 작업을 수행 할 경우 :jQuery 복제본 무한 시간?

var cloned = $('#elem1').clone(); 
$('#elem2').after(cloned); 
$('#elem2').after(cloned); 


elem1의 사본을 복사받을 것이며, 두 번째 after 호출은 아무것도하지 것이다.

복제 된 개체를 사용한 후 "클립 보드를 지우지"않는 방법이 있습니까? 지금은 어딘가에 삽입하기 전에 객체를 다시 복제하여 작업을하고 있습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

답변

3

두 줄은 동일한 jQuery 요소 집합을 두 번 이동합니다. 새로운 사본을 원한다면 다시 복제해야합니다. after()은 복제하지 않습니다. 콘텐츠를 주변으로 이동시킵니다. 이 경우 clone()이 콘텐츠를 만드는 것입니다. 중복 ID를 기술적으로 그렇게 허용되지 않습니다

var cloned = $('#elem1').clone().removeAttr("id"); 
$('#elem2').after(cloned); 
cloned = $('#elem1').clone().removeAttr("id"); 
$('#elem2').after(cloned); 

로 동작이 정의되지 않은 : 당신이 그렇게 할 때

var cloned = $('#elem1').clone(); 
$('#elem2').after(cloned); 
cloned = $('#elem1').clone(); 
$('#elem2').after(cloned); 

은 또한 당신은 ID 속성을 변경하거나 제거해야합니다.

+0

예, ID 선택기를 예제로 사용 했으므로주의해야합니다. – Suan

+0

jquery 전문가가 아닙니다. 두 번째 검색이 필요합니까? 세 번째 줄에 'cloned = $ ('elem1 ') .clone() 대신 예를 들어'cloned = cloned.clone()'을 할 수 있습니까? –

+0

@danielWagner 복제 된 요소가 비어있는 경우가 아니라면 좋지 않습니다 (어떤 요소를 만들 때 루프를 사용해야하므로). 그렇지 않으면 '복제 된'변수에 이미 삽입 된 동적으로 추가 된 입력을 복제하게됩니다. –