1

外部ライブラリを私のプロジェクトに統合しています。残念ながら、この外部ライブラリは Prototype を使用していますが、私のプロジェクトは jQuery に依存しています。次の問題を除いて、これは機能しています。

  1. Event.observe()ページの読み込み時に、Prototype はページ上の DOM 要素を介してイベント オブザーバーを適用します。
  2. ユーザーの操作によって、この DOM 要素は を使用して複製jQuery.clone()され、ページの別の部分で使用できるようになります。

残念ながら、複製されたコピーはEvent.observe()もう Prototype のリスナーにバインドされていません。

jQuery.clone() は 2 つのパラメーターを受け入れてイベント ハンドラーもコピーすることに既に気付きましたが、これは 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 に答える