Why is the jquery empty function so complicated?

html, javascript, jquery

Solution

Just think about `.data()` expandos and event handlers... By just removing the DOM, you would create memory leaks every time.

Problem

I looked at the `jQuery` source code for the `.empty()` function: ``` 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 ); } }​ ``` Couldn't it be a lot simpler with just changing the `innerHTML` to an empty string: ``` empty: function() { for ( var i = 0, elem; (elem = this[i]) != null; i++ ) { elem.innerHTML = ""; }​ ``` The `empty` docs: Description: Remove all child nodes of the set of matched elements from the DOM.

Original source