是否可以在 JavaScript 中克隆 html 元素对象?

IT技术 javascript jquery
2021-01-18 20:04:18

我在表格中有一个 html 元素(如选择框输入字段)。现在我想复制对象并从副本中生成一个新对象,并使用 JavaScript 或 jQuery。我认为这应该以某种方式起作用,但目前我有点无能为力。

像这样(伪代码):

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

newDdl = oldDdl;

oldDdl.attr('id', newId);

oldDdl.html();
6个回答

使用原生 JavaScript:

newelement = element.cloneNode(bool)

其中布尔值指示是否克隆子节点。

这是关于 MDN 的完整文档

看起来不错……但浏览器兼容性在今天仍有问题。
2021-03-25 20:04:18
@AniketSuryavanshi 我不确定特别是 2 月 4 日,但今天的兼容性看起来很完美
2021-04-02 20:04:18
最佳答案。不要在不需要的地方使用 jquery。
2021-04-06 20:04:18
太糟糕了,你失去了所有的属性:/
2021-04-07 20:04:18
ID 和名称将重复。ID 需要更改,如果需要重复名称,名称可以保持原样。
2021-04-08 20:04:18

使用您的代码,您可以使用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
克隆元素时修改 ID 非常重要。
2021-03-31 20:04:18

是的,您可以复制一个元素的子元素并将它们粘贴到另一个元素中:

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

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

证明:http : //jsfiddle.net/de9kc/

重复的 ID 将成为您的方法的问题
2021-04-03 20:04:18

在 jQuery 中实际上非常简单:

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

当然改变 .appendTo() ......

您可以使用clone()方法来创建副本..

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

在这里小提琴