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.
Just think about
.data()expandos and event handlers… By just removing the DOM, you would create memory leaks every time.