X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fmanipulation.js;h=196f2307202eb98c34a820583126de627bcfb082;hb=a6f3757d50f8be021505f4f7fa7201199e8b7f2d;hp=a58e52b6a8b0b57084d6d9035ae556d650283727;hpb=c1ac9fdf45632f0e0d1f7183500ce45dde7319d7;p=jquery.git diff --git a/src/manipulation.js b/src/manipulation.js index a58e52b..196f230 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -547,7 +547,9 @@ jQuery.extend({ }, cleanData: function( elems ) { - var data, id, cache = jQuery.cache; + var data, id, cache = jQuery.cache, + special = jQuery.event.special, + deleteExpando = jQuery.support.deleteExpando; for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { id = elem[ jQuery.expando ]; @@ -556,12 +558,22 @@ jQuery.extend({ data = cache[ id ]; if ( data.events ) { - for ( var event in data.events ) { - removeEvent( elem, event, data.handle ); + for ( var type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + } else { + removeEvent( elem, type, data.handle ); + } } } - removeExpando( elem ); + if ( deleteExpando ) { + delete elem[ jQuery.expando ]; + + } else if ( elem.removeAttribute ) { + elem.removeAttribute( jQuery.expando ); + } delete cache[ id ]; }