Skip to content
Permalink
Browse files

avoid creating a new data cache if we don't need one. Also, short-cir…

…cuit the case where $.data is used to get the cache id
  • Loading branch information
wycats committed Sep 15, 2009
1 parent 19cd84c commit c4f144eeffd94c745839b0ced2de9c62cfa9f075
Showing with 14 additions and 9 deletions.
  1. +14 −9 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 ) {

0 comments on commit c4f144e

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