3

jQuery関数のソースコードを見ました.empty()

empty: function() {
        for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
            // Remove element nodes and prevent memory leaks
            if ( elem.nodeType === 1 ) {
                jQuery.cleanData( elem.getElementsByTagName("*") );
            }

            // Remove any remaining nodes
            while ( elem.firstChild ) {
                elem.removeChild( elem.firstChild );
            }
        }​

innerHTMLを空の文字列に変更するだけで、もっと簡単にできませんでした:

empty: function() {
        for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
                elem.innerHTML = "";
        }​

empty ドキュメント:_

説明: 一致した要素のセットのすべての子ノードを DOM から削除します。

4

1 に答える 1

11

expandos とイベント ハンドラーについて考えてみて.data()ください... DOM を削除するだけでは、毎回メモリ リークが発生します。

于 2012-04-24T20:25:54.553 に答える