2012-09-19 4 views
1

나는 HTML 구조를 가지고 있습니다. jQuery : 컨테이너 만 복사하는 방법?

http://jsfiddle.net/Pj5sn/

<div id="mydiv" class="some" onclick="alert('Hello!')" style="background:red" > 
    <div>aa</div> 
    <div style="background:green" >bb</div> 
</div> 

와 나는 결과로
<div id="mydiv" class="some" onclick="alert('Hello!')" style="background:red" > 
</div> 

를 원한다. .clone() 딥 복사본을 만들지 만 얕은 복사본이 필요합니다.

모든 답변은 지금까지 완전한 복사본과 내용을 포함하고 있습니다. 나는 그것들을 수십 개의 물체를 담은 수십 개의 컨테이너에 사용하려고한다. 더 효율적인 것이 필요하다는 것이 나는 중요합니다.

답변

0

해결 방법 사용 된 솔루션이 조금 다릅니다. 먼저 좀 구조를 만들고 내부의 div 컨텐츠를 이동 :

var $storage=$('<div/>').append($("#mydiv").children()); 

가 지금은 남아있는 "쉘"을 복제하고 내용의 적절한 부분 안에 이동할 수 있습니다

$("#mydiv").clone(true,true).attr("id","d1") 
    .appendTo($(document.body)) 
     .append($(":first-child",$storage)); 

http://jsfiddle.net/KyTZ6/

어쩌면 너무 복잡해 보이지만 내 작업은 HTML 테이블 (~ 30 x 30)을 여섯 부분으로 나누는 것이었고 제안 된 복제 및 지우기에 성능 문제가있었습니다.

3

가장 쉬운 방법은 $(this).clone().html('')입니다.

8

.clone()을 먼저 사용한 다음 .empty()을 사용하십시오.

+2

+1 이것은 내 생각보다 낫습니다. – Jon

+0

@ 존 : 고마워. 하지만 전체 5 초가 빨랐어 요. – Tadeck

+0

예제는 간단하지만 내부에 많은 코드가있을 수 있으며 매우 효율적으로 보이지 않습니다. – IvanH

관련 문제