Skip to content
Permalink
Browse files

Overhauled the .remove() and .empty() methods to be much more efficie…

…nt. Fixes bug #4222.
  • Loading branch information...
jeresig committed Feb 23, 2009
1 parent 48164ee commit cb3f842c8889458d96511b0103ebbff5cbac217d
Showing with 21 additions and 8 deletions.
  1. +21 −8 src/core.js
@@ -1225,30 +1225,43 @@ jQuery.each({

remove: function( selector ) {
if ( !selector || jQuery.multiFilter( selector, [ this ] ).length ) {
// Prevent memory leaks
jQuery( "*", this ).add([this]).each(function(){
jQuery.event.remove(this);
jQuery.removeData(this);
});
if (this.parentNode)
if ( this.nodeType === 1 ) {
cleanData( this.getElementsByTagName("*") );
cleanData( [this] );
}

if ( this.parentNode ) {
this.parentNode.removeChild( this );
}
}
},

empty: function() {
// Remove element nodes and prevent memory leaks
jQuery(this).children().remove();
if ( this.nodeType === 1 ) {
cleanData( this.getElementsByTagName("*") );
}

// Remove any remaining nodes
while ( this.firstChild )
while ( this.firstChild ) {
this.removeChild( this.firstChild );
}
}
}, function(name, fn){
jQuery.fn[ name ] = function(){
return this.each( fn, arguments );
};
});

function cleanData( elems ) {
for ( var i = 0, l = elems.length; i < l; i++ ) {
var id = elems[i][expando];
if ( id ) {
delete jQuery.cache[ id ];
}
}
}

// Helper function used by the dimensions and offset modules
function num(elem, prop) {
return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;

0 comments on commit cb3f842

Please sign in to comment.
You can’t perform that action at this time.