たとえば、要素が<img id="foo" />
あり、いくつかのイベントが添付されているとしますclick
(インラインではありませんonclick
!)。
// somewhere i wrote
foo.addEventListener("click", clickHandler, false);
...
// somewhere i will write
foo.parentNode.removeChild(foo);
すべてのイベントも削除する必要がありますか?
たとえば、要素が<img id="foo" />
あり、いくつかのイベントが添付されているとしますclick
(インラインではありませんonclick
!)。
// somewhere i wrote
foo.addEventListener("click", clickHandler, false);
...
// somewhere i will write
foo.parentNode.removeChild(foo);
すべてのイベントも削除する必要がありますか?
jQueryのメソッドに関するドキュメントにempty()
は次のように書かれています:
メモリ リークを回避するために、jQuery は要素自体を削除する前に、子要素からデータやイベント ハンドラーなどの他の構成要素を削除します。
つまり、1) イベント ハンドラーを明示的に削除しないと、メモリ リークが発生します。2) を使用するempty()
と、このメモリ リークを回避できます。
これも参照してくださいdo-events-handlers-on-a-dom-node-get-deleted-with-the-node
要素を DOM から削除しても、そのリスナーは削除されません (削除すべきではありません)。結局のところ、DOM 要素を再配置している途中である可能性が非常に高いため、リスナーを破棄したくない場合があります。
前または後にリスナーを削除できますが、違いはありません。
要素を削除し、今後使用しないことを計画している場合は、メモリ リークの可能性を回避するために、イベントの削除を続行することをお勧めします。