2011-09-25 4 views
14

いくつかの要素を削除するために.remove()を使用すると、jQueryでは要素に関連付けられたすべてのバインドされたイベントとjQueryデータが削除されます。.html()を使用して要素を削除すると、jQueryのイベントリスナーが自動的に削除されますか?

しかし、.html()で要素を削除するとどうなりますか?

メモリリークを防ぐためにhtmlを変更する前に、すべての要素をバインド解除する必要がありますか?

答えて

15

はい、削除されます。 jQueryは、削除された要素に関連するイベントなどをクリーンアップします。あなただけのビットを展開する$(ELM1).htmlを($ elm2.html())

12

ええ、html()を使用しても削除されます。 jQuery source codeがそれを確認します。

+1

ありがとうございましたAnurag、私はあなたが最初で、あなたの答えを証明していますが(+1)、kinghfbはより多くのポイントを必要としているので、私は彼の動機付けとして受け入れられたと答えます。ありがとう! – Enrique

+1

問題ありません@Enrique :) – Anurag

+0

いずれにせよ、ソースコードへのリンクであなたの答えを検証するためのSOのバッジがあります:) –

0

ような何かを行う場合は、イベントをコピーしません:

など
  • .remove().html().empty()、 - すべての削除をリスナー
  • .detach()削除されませんリスナー
  • .clone()データ/リスナーがコピーされる場合は、決定させるパラメータがあり

リスナーを保持する場合は、.detach()を使用します。

関連する問題