如何在另一个内部镜像一个div的内容?

时间:2015-03-02 21:21:26

标签: javascript jquery

我正在尝试将一个div的内容显示在屏幕上的另一个div中。我要复制的div有一组按钮,我想要逐字镜像内容,所以所有的javascript函数/监听器仍然可以工作。

我试过了:

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

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

上面的两行都复制了按钮和类,但是没有附加到原始按钮的javascript工作。有谁有任何关于我如何做到这一点的想法?

这可能听起来很奇怪,但这对我想做的事情是必要的。

2 个答案:

答案 0 :(得分: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()方法)和类选择器。这样你新克隆的东西就可以了。

答案 1 :(得分: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进行的用户选择)不会复制到克隆元素。克隆输入元素时,元素的动态状态(例如,键入文本输入的用户数据和对复选框的用户选择)将保留在克隆元素中。