我正在尝试将一个div的内容显示在屏幕上的另一个div中。我要复制的div有一组按钮,我想要逐字镜像内容,所以所有的javascript函数/监听器仍然可以工作。
我试过了:
$("#copy").appendTo("#target");
$(#copy).clone().appendTo("#target");
上面的两行都复制了按钮和类,但是没有附加到原始按钮的javascript工作。有谁有任何关于我如何做到这一点的想法?
这可能听起来很奇怪,但这对我想做的事情是必要的。
答案 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;
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进行的用户选择)不会复制到克隆元素。克隆输入元素时,元素的动态状态(例如,键入文本输入的用户数据和对复选框的用户选择)将保留在克隆元素中。