我正在尝试使用jquery appendTo将元素复制到另一个容器中。 确实附加了该对象,但是它已从源中删除。 有没有办法我可以附加元素,同时将源元素留在原处? 称之为复制,称之为克隆,无论你感觉如何。
这是我目前的代码:
jQuery(document).ready(function()
{
jQuery('#button').appendTo('#panel'); //button should appear ALSO in panel.
});
答案 0 :(得分:10)
关闭,但不够近。下面的代码将clone()
元素,然后将其附加到#panel
。
jQuery(document).ready(function()
{
jQuery('#button').clone().appendTo('#panel');
});
请注意,在同一页面中使用ID
两次是违反标准的。所以,解决这个问题:
jQuery(document).ready(function()
{
jQuery('#button').clone().attr('id', 'newbutton').appendTo('#panel');
});
答案 1 :(得分:5)
在附加jQuery对象之前,只需调用clone()
方法:
$('#button').clone().appendTo('#panel');
如果您还需要克隆附加到所选元素的所有事件处理程序,请将布尔true
作为参数传递给clone()
方法。
此外,您可能希望更改所选元素的id
属性...
这很简单:
$('#button').clone().attr('id', 'button-clone').appendTo('#panel');
答案 2 :(得分:0)
您需要运行的代码是:
jQuery(document).ready(function()
{
jQuery('#button').clone().appendTo('#panel'); //button should appear ALSO in panel.
});
这样做是从DOM抓取节点,然后在内存中复制它。然后该行接受这个新对象(jQuery('#button').clone()
),然后将其追加到#panel
的DOM中。这通常是一个很好的策略:尝试通过尽可能少地触摸DOM来进行DOM操作。您可以对节点和元素进行大量操作,而无需插入或追加它们直到最后。