jQuery cloneTo而不是appendTo?

时间:2009-07-29 00:41:09

标签: javascript jquery html clone

我正在尝试使用jquery appendTo将元素复制到另一个容器中。 确实附加了该对象,但是它已从源中删除。 有没有办法我可以附加元素,同时将源元素留在原处? 称之为复制,称之为克隆,无论你感觉如何。

这是我目前的代码:

jQuery(document).ready(function()
{
    jQuery('#button').appendTo('#panel'); //button should appear ALSO in panel.
});

3 个答案:

答案 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操作。您可以对节点和元素进行大量操作,而无需插入或追加它们直到最后。