Reputation: 150293
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.
Upvotes: 3
Views: 1239
Reputation: 236122
Just think about .data()
expandos and event handlers... By just removing the DOM, you would create memory leaks every time.
Upvotes: 11