Câu hỏi Có thể sao chép các đối tượng phần tử html trong JavaScript / JQuery không?


Tôi đang tìm một số mẹo về cách giải quyết vấn đề của mình.

Tôi có một phần tử html (như trường nhập hộp chọn) trong một 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.

Một cái gì đó như thế này (mã giả):

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

newDdl = oldDdl;

oldDdl.attr('id', newId);

oldDdl.html();

75
2018-05-28 14:58


gốc


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


Các câu trả lời:


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

Nhìn vào clone () phương pháp 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

34
2018-05-28 14:59



Nó là rất quan trọng để sửa đổi ID khi bạn sao chép một phần tử. - Dragos Durlut


Với javascript gốc:

newelement = element.cloneNode(bool)

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


247
2018-05-28 15:01



câu trả lời hay nhất. không sử dụng jquery nơi bạn không cần nó. - luschn
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. - Aniket Suryavanshi
@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 hôm nay
ID và tên sẽ được nhân đôi. ID cần phải được thay đổi, tên COULD được để lại như chúng là nếu tên trùng lặp được mong đợi. - przemo_li


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

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

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

Bằng chứng: http://jsfiddle.net/de9kc/


15
2017-09-28 00:23



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


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

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

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


3
2018-05-28 15:00





Bạn có thể dùng clone () phương pháp tạo bản sao ..

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

FIDDLE HERE


2
2017-09-28 00:45





Thử cái này:

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

1
2017-09-28 00:30





Trong một dòng:

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

0
2018-05-28 15:01



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


Bạn cần chọn "# foo2" làm công cụ chọn của mình. 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);
});​

Đây là jsfiddle: http://jsfiddle.net/fritzdenim/DhCjf/


0
2017-09-28 00:33