Made the expando code attach properties to an anonymous object, as opposed to the global window object, and fixed a bug where .removeAttribute() tried to fire even if it didn't exist.

This commit is contained in:
John Resig 2007-09-10 18:39:16 +00:00
parent 899ee03d37
commit 6476b15f1a

View File

@ -440,7 +440,7 @@ jQuery.extend = jQuery.fn.extend = function() {
return target;
};
var expando = "jQuery" + (new Date()).getTime(), uuid = 0;
var expando = "jQuery" + (new Date()).getTime(), uuid = 0, win = {};
jQuery.extend({
noConflict: function(deep) {
@ -485,6 +485,8 @@ jQuery.extend({
cache: {},
data: function( elem, name, data ) {
elem = elem == window ? win : elem;
var id = elem[ expando ];
// Compute a unique ID for the element
@ -505,6 +507,8 @@ jQuery.extend({
},
removeData: function( elem, name ) {
elem = elem == window ? win : elem;
var id = elem[ expando ];
// If we want to remove a specific section of the element's data
@ -528,7 +532,8 @@ jQuery.extend({
} catch(e){
// IE has trouble directly removing the expando
// but it's ok with using removeAttribute
elem.removeAttribute( expando );
if ( elem.removeAttribute )
elem.removeAttribute( expando );
}
// Completely remove the data cache