如何将一个div的内容克隆到另一个div中

35
我想使用jQuery克隆选定div的内容到另一个div中,但是我不想将其附加到任何地方。我的意思是,当我们使用jquery克隆div时(如果我理解有误,请纠正),我们必须设置它的位置,并且它会动态创建一个显示的新division。但是我想要获取所选div的内容并将其复制到另一个预设的div中。

谢谢大家,这是我真正想要发生的事情:http://www.jsfiddle.net/pahnin/c2p54/2/ - pahnin
4个回答

73
var a = $('#selector').html();
var b = $('#selector').html(a);

不确定我是否正确理解了您的意思,但我认为这就是您想表达的意思 :)


24
这句话也可以写成:$('#selectorDestination').html($('#selectorSource').html());。避免声明变量。 - Dustin Laine
14
我们需要小心的唯一一件事就是不要在HTML中重复使用ID。 - kobe
@dustin 是的,那是同样的事情,但我认为既然他要求不将其放在DOM上“我不想将其附加到任何地方” :) 那么这是最好的方法。 - Val
这种方法需要进行HTML解析,而克隆/附加方法则不需要。请考虑代码注入和性能。 - YoYo

12

我不同意。克隆可以在不应用到内容的情况下保存数据。

看这里:

http://www.jsfiddle.net/dactivo/FqffM/

var mylayer=$('.hello').clone();

您可以随意管理变量“mylayer”,并且它不在DOM中。


当然,html()是一个很好的方法,但是知道可以在不包含在DOM中的情况下管理clone()也是很好的。 - netadictos
1
“Clone” 还会复制容器元素,而我认为 @pahnin 不想要这个。 - Dustin Laine
好的,我认为真正的问题是您不想设置它的位置。html()非常适合这个问题。 - netadictos

9
$("#from").clone().appendTo($("#to"));

但是它不会移除/隐藏主要的DIV。要隐藏主DIV,请执行以下操作:

$("#from").clone().appendTo($("#to"));
$("#from").remove();

1
我觉得你没有理解我的问题。 - pahnin

4
$(".from").click(function () {
     $(".from").removeClass("CloneMe");
     $("#to").html('');
     $(this).addClass("CloneMe");
     $(".CloneMe").clone().appendTo("#to");

});

你可以在点击(或其他事件)时添加一个硬编码的类来克隆。在这个例子中,有一个包含样式内容(div等)的相同类名列表 - 添加 .CloneMe 类,但首先删除该类以清空 div,以防用户选择不同的项目。为了安全起见,还要删除任何 html。然后使用 (this) 应用类,以避免抓取所有具有该类名的项,并最终附加到 div 上。结果是用户可以选择任何具有该类名的项目并将其填充到容器中。- 我想使用容器类可以让你在更多地方填充它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接