2009-05-28 31 views
73

Tôi đang tìm một số mẹo về cách giải quyết vấn đề của mình.Có thể sao chép các đối tượng phần tử html trong JavaScript/JQuery không?

Tôi có phần tử html (như trường nhập hộp chọn) trong bảng. Bây giờ tôi muốn sao chép đối tượng và tạo một đối tượng mới ra khỏi bản sao và với JavaScript hoặc jQuery. Tôi nghĩ rằng điều này sẽ làm việc bằng cách nào đó nhưng tôi là một chút không biết gì vào lúc này.

Something như thế này (pseudo code):

+3

http://stackoverflow.com/search?q=jquery+copy+element+content có một loạt câu hỏi liên quan. –

Trả lời

34

Cách jQuery (không phải là hiệu quả nhất):

Nhìn vào phương pháp clone() của JQuery

Sử dụng mã của bạn, bạn có thể làm một cái gì đó như thế:

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

Điều quan trọng là phải sửa đổi ID khi bạn sao chép một phần tử. –

3

Nó thực sự rất dễ dàng trong jQu ery:

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

Thay đổi .appendTo() tất nhiên ...

+0

+1 bạn đánh bại tôi! –

0

Trong một dòng:

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

Tôi không nghĩ rằng sẽ giúp làm giá trị thuộc tính của bạn là một chuỗi sẽ không thay đổi. –

238

Với javascript mẹ đẻ:

newelement = element.cloneNode(bool) 

nơi boolean cho biết sao chép các nút con hoặc không

+33

câu trả lời hay nhất. không sử dụng jquery nơi bạn không cần nó. – luschn

+0

Có vẻ tốt ... nhưng khả năng tương thích với trình duyệt là vấn đề kể từ hôm nay. –

+11

@AniketSuryavanshi Tôi không chắc chắn về ngày 4 tháng 2 nói riêng, nhưng [khả năng tương thích trông hoàn hảo ngày hôm nay] (http://quirksmode.org/dom/core/#t91) –

15

Có, bạn có thể sao chép con của một phần tử và dán chúng vào các yếu tố khác:

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

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

Proof: http://jsfiddle.net/de9kc/

+0

ID trùng lặp sẽ là vấn đề với cách tiếp cận của bạn –

1

Hãy thử điều này:

$('#foo1').html($('#foo2').children().clone()); 
0

Bạn cần phải chọn "# foo2" làm công cụ chọn của bạn. Sau đó, lấy nó bằng html().

Đây là html:

<div id="foo1"> 

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

Đây là javascript:

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

Dưới đây là jsfiddle: http://jsfiddle.net/fritzdenim/DhCjf/

2

Bạn có thể sử dụng clone() phương pháp để tạo ra một copy ..

$('#foo1').html($('#foo2 > div').clone())​; 

FIDDLE HERE

Các vấn đề liên quan