8

たとえば、要素が<img id="foo" />あり、いくつかのイベントが添付されているとしますclick(インラインではありませんonclick!)。

// somewhere i wrote
foo.addEventListener("click", clickHandler, false);
...
// somewhere i will write
foo.parentNode.removeChild(foo);

すべてのイベントも削除する必要がありますか?

4

2 に答える 2

12

jQueryのメソッドに関するドキュメントにempty()のように書かれています:

メモリ リークを回避するために、jQuery は要素自体を削除する前に、子要素からデータやイベント ハンドラーなどの他の構成要素を削除します。

つまり、1) イベント ハンドラーを明示的に削除しないと、メモリ リークが発生します。2) を使用するempty()と、このメモリ リークを回避できます。

これも参照してくださいdo-events-handlers-on-a-dom-node-get-deleted-with-the-node

于 2012-12-26T12:31:43.460 に答える
6

要素を DOM から削除しても、そのリスナーは削除されません (削除すべきではありません)。結局のところ、DOM 要素を再配置している途中である可能性が非常に高いため、リスナーを破棄したくない場合があります。

前または後にリスナーを削除できますが、違いはありません。

要素を削除し、今後使用しないことを計画している場合は、メモリ リークの可能性を回避するために、イベントの削除を続行することをお勧めします。

于 2012-12-26T12:18:04.217 に答える