73

私は試した

node.cloneNode(true); // deep copy

を使用して追加したイベントリスナーをコピーしていないようですnode.addEventListener("click", someFunc);

Dojo ライブラリを使用します。

4

5 に答える 5

90

cloneNode()イベントリスナーをコピーしません。実際、一度アタッチされたイベントリスナーをDOM経由で取得する方法はないため、オプションは次のとおりです。

  • 複製されたノードにすべてのイベントリスナーを手動で追加します
  • コードをリファクタリングしてイベント委任を使用し、すべてのイベントハンドラーが元のハンドラーとクローンの両方を含むノードに接続されるようにします
  • ラッパー関数を使用して、Node.addEventListener()各ノードに追加されたリスナーを追跡します。clone()これは、たとえば、jQueryのメソッドがイベントリスナーを含むノードをコピーする方法です。
于 2013-03-14T14:12:30.613 に答える