2011-12-17 15 views
16

いくつかのDOM要素に一連のイベントを添付して削除した場合、イベントハンドラやその他の属性に使用されるメモリは引き続き使用されますか?Javascriptは削除されたDOM要素のイベントハンドラを削除しますか?

私は、AJAXリクエストからの新しい要素とそれらにイベントをバインドしてページの領域を補充しておくと、たくさんのメモリを使用するかどうかを知りたいので、質問します。新しいAJAXの結果が得られます。

+0

これは直接の答えではありませんが、継続的に新しい要素を追加し、古いものを削除している場合、私はイベントの代表団が扱う使用をお勧めしたいですイベント。これにより、この問題は完全に回避されます。 – RightSaidFred

+0

...可能であれば、私は破壊したり再現するのではなく、要素を再利用する方法を見つけようとしています。 – RightSaidFred

+0

@ RightSaidFred、はい - 要素がまったく関連していれば、委任を使用してほとんどのイベントを再利用できます。しかし、これらはまったく別のページの読み込みです。 – Xeoncross

答えて

5

最近のブラウザでは、DOMノードのイベントハンドラで使用されるメモリが解放されます。しかし、古いバージョンのInternet Explorerはそうではありません。したがって、DOMからノードを削除する前に、イベントリスナーを削除することをお勧めします。

これは何が起こっているのか理解するための良い記事です:http://msdn.microsoft.com/en-us/library/bb250448(v=vs.85).aspx

+6

マイナーコメント:IEの誤った動作は、接続された要素への参照を保持するイベントハンドラに関連していました。 –

+1

この記事の公開日は2005年6月です。この回答は2011年のものです。「Internet Explorerの古いバージョン」は少し曖昧ですが、[IE 8](https://en.wikipedia.org/wiki/ Internet_Explorer_8)以前のIE 9が2011年に最新の安定版だったとします。これはまだ私には多少のオープンな質問です... – efx

関連する問題