avoid creating a new data cache if we don't need one. Also, short-circuit the case where $.data is used to get the cache id
This commit is contained in:
parent
19cd84cf32
commit
c4f144eeff
23
src/data.js
23
src/data.js
|
@ -1,4 +1,5 @@
|
|||
var expando = "jQuery" + now(), uuid = 0, windowData = {};
|
||||
var emptyObject = {};
|
||||
|
||||
jQuery.extend({
|
||||
cache: {},
|
||||
|
@ -10,24 +11,28 @@ jQuery.extend({
|
|||
windowData :
|
||||
elem;
|
||||
|
||||
var id = elem[ expando ], cache = jQuery.cache;
|
||||
var id = elem[ expando ], cache = jQuery.cache, thisCache;
|
||||
|
||||
// Compute a unique ID for the element
|
||||
if(!id) id = elem[ expando ] = ++uuid;
|
||||
|
||||
// Only generate the data cache if we're
|
||||
// trying to access or manipulate it
|
||||
if ( name && !cache[ id ] )
|
||||
cache[ id ] = {};
|
||||
|
||||
var thisCache = cache[ id ];
|
||||
// Handle the case where there's no name immediately
|
||||
if ( !name ) { return id; }
|
||||
|
||||
// Avoid generating a new cache unless none exists and we
|
||||
// want to manipulate it.
|
||||
if( cache[ id ] )
|
||||
thisCache = cache[ id ];
|
||||
else if( typeof data === "undefined" )
|
||||
thisCache = emptyObject;
|
||||
else
|
||||
thisCache = cache[ id ] = {};
|
||||
|
||||
// Prevent overriding the named cache with undefined values
|
||||
if ( data !== undefined ) thisCache[ name ] = data;
|
||||
|
||||
if(name === true) return thisCache;
|
||||
else if(name) return thisCache[name];
|
||||
else return id;
|
||||
else return thisCache[name];
|
||||
},
|
||||
|
||||
removeData: function( elem, name ) {
|
||||
|
|
Loading…
Reference in a new issue