8

要素がページから削除された場合、それは自動的にバインド解除されますか?それとも、これはjqueryのunbindを使用してバインドを解除する必要があるシナリオですか?

自動的に行われると思います...

4

1 に答える 1

6

removeまたはを使用して要素を削除emptyすると、メモリリークを防ぐために、イベントハンドラが自動的に削除されます。それ以外の場合は、それらの要素を削除する前に明示的にバインド解除されない限り、それらは残ります。

編集:内部メソッド(5177行目で宣言).htmlを呼び出すことにより、イベントハンドラーも削除されることが判明しました。あなたはソース.cleanDataでこれをチェックすることができます:

html: function( value ) {
   ...

    for ( var i = 0, l = this.length; i < l; i++ ) {
                    // Remove element nodes and prevent memory leaks
                   if ( this[i].nodeType === 1 ) {
                       jQuery.cleanData( this[i].getElementsByTagName("*") );
                       this[i].innerHTML = value;
                    }
                }
   ...

innerHTMLしたがって、メモリリークを回避するために、 jQueryイベントハンドラーがアタッチされているDOM要素を直接使用して置き換えることはしないでください。

于 2010-12-05T00:22:06.997 に答える