JavaScript / JQuery에서 html 요소 객체를 복제 할 수 있습니까?


100

내 문제를 해결하는 방법에 대한 몇 가지 팁을 찾고 있습니다.

테이블에 html 요소 (예 : 선택 상자 입력 필드)가 있습니다. 이제 객체를 복사하고 사본에서 새 객체를 생성하고 JavaScript 또는 jQuery를 사용합니다. 나는 이것이 어떻게 든 작동해야한다고 생각하지만 지금은 약간 단서가 없습니다.

다음과 같은 것 (의사 코드) :

oldDdl = $("#ddl_1").get(); 

newDdl = oldDdl;

oldDdl.attr('id', newId);

oldDdl.html();

답변:


60

코드를 사용하면 cloneNode () 메서드를 사용하여 일반 JavaScript에서 다음과 같은 작업을 수행 할 수 있습니다 .

// Create a clone of element with id ddl_1:
let clone = document.querySelector('#ddl_1').cloneNode( true );

// Change the id attribute of the newly created element:
clone.setAttribute( 'id', newId );

// Append the newly created element on element p 
document.querySelector('p').appendChild( clone );

또는 jQuery clone () 메서드 사용 (가장 효율적이지 않음) :

$('#ddl_1').clone().attr('id', newId).appendTo('p'); // append to where you want

30
요소를 복제 할 때 ID를 수정하는 것이 매우 중요합니다.
Dragos Durlut 2012 년

285

네이티브 JavaScript 사용 :

newelement = element.cloneNode(bool)

여기서 부울은 자식 노드를 복제할지 여부를 나타냅니다.

다음은 MDN에 대한 전체 문서입니다 .


50
최고의 답변입니다. 필요하지 않은 곳에 jquery를 사용하지 마십시오.
luschn

괜찮아 보이지만 오늘날 브라우저 호환성에 의문이 있습니다.
Aniket Suryavanshi

13
@AniketSuryavanshi 나는 특히 2 월 4에 대해 잘 모르겠지만, 호환성을 완벽 오늘 보인다

2
ID와 이름이 중복됩니다. ID를 변경해야합니다. 중복 이름이 예상되는 경우 이름은 그대로 둘 수 있습니다.
przemo_li

너무 나쁜 당신은 모든 속성을 잃게 : /
피터 드 BIE

16

예, 한 요소의 자식을 복사하여 다른 요소에 붙여 넣을 수 있습니다.

var foo1 = jQuery('#foo1');
var foo2 = jQuery('#foo2');

foo1.html(foo2.children().clone());

증명 : http://jsfiddle.net/de9kc/


중복 ID는 당신의 접근 방식에 문제가있을 것입니다
przemo_li

4

실제로 jQuery에서는 매우 쉽습니다.

$("#ddl_1").clone().attr("id",newId).appendTo("body");

물론 .appendTo () 변경 ...




0

한 줄로 :

$('#selector').clone().attr('id','newid').appendTo('#newPlace');

1
속성 값이 변경되지 않는 문자열이기 때문에 도움이 될 것이라고 생각하지 않습니다.
Jamie R Rytlewski

0

선택기로 "# foo2"를 선택해야합니다. 그런 다음 html ()로 가져옵니다.

다음은 html입니다.

<div id="foo1">

</div>
<div id="foo2">
    <div>Foo Here</div>
</div>​

다음은 자바 스크립트입니다.

$("#foo2").click(function() {
    //alert("clicked");
    var value=$(this).html();
    $("#foo1").html(value);
});​

다음은 jsfiddle입니다. http://jsfiddle.net/fritzdenim/DhCjf/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.