1

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

  1. 在页面加载时,Prototype 将事件观察器应用Event.observe()到页面上的 DOM 元素
  2. 在一些用户交互后,这个 DOM 元素然后被克隆使用jQuery.clone(),以便它可以在页面的另一部分使用

不幸的是,克隆的副本不再绑定到 Prototype 的Event.observe()侦听器。

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

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

4

1 回答 1

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');
});
于 2013-04-29T15:10:10.343 回答