2015-03-02 156 views
0

我试图在屏幕上显示一个div的内容到不同的div中。我想要复制的div有一组按钮,我想逐字镜像内容,所以所有的javascript funcitons/listeners仍然可以工作。如何将一个div的内容镜像到另一个div的内容中?

我已经试过:以上

$("#copy").appendTo("#target"); 

$(#copy).clone().appendTo("#target"); 

两条线复制按钮和类,但没有原隶属按钮的JavaScript的工作。有没有人有任何想法,我怎么能做到这一点?

这听起来有点奇怪,但这对我想做的事情是必要的。

+2

“克隆”是一个更好的词,因为镜像意味着方向的颠倒。另外,我怀疑你的字面意思是“从字面上”。 :P – isherwood 2015-03-02 21:23:32

+4

提示#1:ID必须是唯一的。 – zerkms 2015-03-02 21:24:21

+0

你的代码将JS附加到按钮看起来像什么?在克隆发生之前,您需要确保将事件附加到页面上存在的某个容器。 – 2015-03-02 21:27:13

回答

4

我想尝试这两种:

$(#copy).html().clone(true).appendTo("#target"); 

或者这样:

$(#copy).clone(true).attr.('id', 'some_other_id').appendTo("#target"); 

...防止重复ID的场景。当然,你会想检查所有后代元素的同一问题。

然后,考虑事件处理程序:

通常情况下,势必原始元素任何事件处理程序不会被复制到克隆。可选的withDataAndEvents参数允许我们改变这种行为,而且也将所有事件处理程序的副本绑定到元素的新副本。从jQuery 1.4开始,所有元素数据(由.data()方法附加)也被复制到新副本中。

Read more on that

最好的办法可能是使用事件代理(通过on()法)和类选择。这样你新克隆的东西就可以工作。

+0

应该提及'withDataAndEvents'是传递给克隆方法的布尔值。 (即'$(#copy).clone(true)') – talves 2015-03-02 21:36:32

+0

良好的通话。谢谢。 – isherwood 2015-03-02 21:37:58

0

你试过设置withDataAndEvents为true吗?如果您检查有关克隆的文档,则默认为false;

http://api.jquery.com/clone/

withDataAndEvents (default: false) 
Type: Boolean 
A Boolean indicating whether event handlers should be copied along with the elements. As of jQuery 1.4, element data will be copied as well. 

也许尝试克隆为使

$("#clone").clone(true, true) 

此外,如果你只是克隆输入这应该工作。 某些表单元素的动态状态(例如,键入到textarea中的用户数据以及对select进行的用户选择)未被复制到克隆的元素。克隆输入元素时,元素的动态状态(例如,输入到文本输入中的用户数据和对复选框进行的用户选择)保留在克隆元素中。

相关问题