jQuery.clone()&保持Prototype.js事件观察者通过Event.observe()应用

时间:2013-04-29 11:45:51

标签: jquery prototypejs

我正在将一个外部库集成到我的项目中。不幸的是,这个外部库使用Prototype,而我的项目依赖于jQuery。我有这个工作,除了以下问题:

  1. 在页面加载时,Prototype通过Event.observe()将事件观察者应用于页面上的DOM元素
  2. 在一些用户交互之后,然后使用jQuery.clone()克隆此DOM元素,以便可以在页面的其他部分使用它
  3. 不幸的是,克隆的副本不再绑定到Prototype的Event.observe()侦听器了。

    我已经注意到jQuery.clone()接受两个参数来复制事件处理程序,但我想这只适用于jQuery自己的事件处理程序,而不是通过另一个库应用的事件处理程序。

    有没有人知道如何在不丢失原型事件处理程序的情况下创建元素的副本?

1 个答案:

答案 0 :(得分:0)

鉴于此HTML

<div id="mydiv">with content</div>

这将克隆元素

var newdiv = $('mydiv').clone();

如果你想让克隆做一个深度克隆并克隆所有子元素并传递true

var newdiv = $('mydiv').clone(true);

然而 clone()方法不会复制观察者 - 所以我建议在DOM中放置一个更高的观察者来监视冒泡的事件。

鉴于此HTML

<div id="mydiv" class="cloneclick">with content</div>

并附加到<body>,例如,克隆的div仍将具有cloneclick类,并仍将触发事件处理程序

$$('body').first().on('click','.cloneclick',function(){
    alert('click happened');
});