DOM 要素の削除とイベント リスナーの管理
Web 開発では、次のような一般的な質問が生じます。ページから削除された場合、それに添付されたイベント リスナーもページから削除されますか?メモリ?"
最新のブラウザ
プレーン JavaScript:
最新のブラウザでは、参照フリーの DOM 要素が削除された場合 (つまり、それを指す参照がない場合)、ガベージ コレクターは要素自体と要素の両方を即座に破棄します。関連するイベント リスナー。これにより、メモリが効率的に解放されます。
例:
var a = document.createElement('div'); var b = document.createElement('p'); // Add event listeners to b... a.appendChild(b); a.removeChild(b); b = null; // No references to 'b' remain. // The element and its event listeners are now removed.
ただし、削除された要素がまだ参照を保持している場合、要素とそのリスナーは両方とも保持されます。 Memory.
例:
var a = document.createElement('div'); var b = document.createElement('p'); // Add event listeners to b... a.appendChild(b); a.removeChild(b); // Element removed but reference still exists. // The element and its event listeners remain.
jQuery:
jQuery では、removeChild() メソッドが使用されます。内部的には、 cleanData() メソッドも利用します。このメソッドは、削除手法 (remove()、empty() など) に関係なく、削除時に要素に関連付けられたデータとイベントを自動的にパージします。
古いブラウザ
Internet Explorer のレガシー バージョン:
古い IE バージョンはイベント リスナーが親要素への参照を保持することに起因するメモリ リークの問題で有名です。このようなシナリオでは、メモリ消費を軽減するためにリスナーを手動で削除することをお勧めします。
結論:
最新のブラウザでは、DOM 要素を削除すると、通常、そのイベント リスナーがメモリから削除されます。ただし、参照を維持するとこのクリーンアップが妨げられ、古いブラウザでメモリ リークが発生する可能性があります。
以上が削除された DOM 要素はそのイベント リスナーを自動的に削除しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。