7

我正在尝试使用 jquery appendTo 将元素复制到另一个容器中。该对象确实已附加,但已从源中删除。有没有办法可以追加元素,同时将源元素留在原处?称它为副本 称它为克隆 随便你怎么称呼它。

这是我当前的代码:

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

3 回答 3

12

接近,但不够接近。下面的代码将clone()元素,然后将其附加到#panel.

jQuery(document).ready(function()
{
    jQuery('#button').clone().appendTo('#panel');
});

请注意,ID在同一页面中使用两次是违反标准的。所以,要解决这个问题:

jQuery(document).ready(function()
{
    jQuery('#button').clone().attr('id', 'newbutton').appendTo('#panel');
});
于 2009-07-29T00:42:52.377 回答
5

只需clone()在您选择的 jQuery 对象上调用该方法,然后再添加它:

$('#button').clone().appendTo('#panel');

如果您还需要克隆附加到选定元素的所有事件处理程序,请将布尔值true作为参数传递给该clone()方法。

此外,您可能需要更改id所选元素的属性......这很简单:

$('#button').clone().attr('id', 'button-clone').appendTo('#panel');
于 2009-07-29T00:43:41.190 回答
1

您需要运行的代码是:

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

这样做是从 DOM 中获取节点,然后在内存中对其进行克隆。然后,该行获取这个新对象 ( jQuery('#button').clone()),然后将其附加到 DOM 中#panel。这通常总是一个好的策略:尝试通过尽可能少地接触 DOM 来进行 DOM 操作。您可以对节点和元素进行大量操作,而无需插入或附加它们直到最后。

于 2009-07-29T00:43:29.363 回答