X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=sidebyside;f=src%2Fdata.js;h=500f7ea43f0508c41410e28eff2b661b85dd6991;hb=5cb1163469fb2c9cd80712cd5481b29055821022;hp=c18e73cfd7aacc6febc3deed2f233644bca55e26;hpb=c4f144eeffd94c745839b0ced2de9c62cfa9f075;p=jquery.git diff --git a/src/data.js b/src/data.js index c18e73c..500f7ea 100644 --- a/src/data.js +++ b/src/data.js @@ -13,26 +13,33 @@ jQuery.extend({ var id = elem[ expando ], cache = jQuery.cache, thisCache; - // Compute a unique ID for the element - if(!id) id = elem[ expando ] = ++uuid; - // Handle the case where there's no name immediately - if ( !name ) { return id; } + if ( !name && !id ) { + return null; + } + + // Compute a unique ID for the element + if ( !id ) { + id = ++uuid; + } // Avoid generating a new cache unless none exists and we // want to manipulate it. - if( cache[ id ] ) + if ( cache[ id ] ) { thisCache = cache[ id ]; - else if( typeof data === "undefined" ) + } else if ( typeof data === "undefined" ) { thisCache = emptyObject; - else + } else { thisCache = cache[ id ] = {}; + } // Prevent overriding the named cache with undefined values - if ( data !== undefined ) thisCache[ name ] = data; - - if(name === true) return thisCache; - else return thisCache[name]; + if ( data !== undefined ) { + elem[ expando ] = id; + thisCache[ name ] = data; + } + + return name ? thisCache[ name ] : thisCache; }, removeData: function( elem, name ) { @@ -49,8 +56,9 @@ jQuery.extend({ delete thisCache[ name ]; // If we've removed all the data, remove the element's cache - if( jQuery.isEmptyObject(thisCache) ) + if ( jQuery.isEmptyObject(thisCache) ) { jQuery.removeData( elem ); + } } // Otherwise, we want to remove all of the element's data @@ -58,17 +66,19 @@ jQuery.extend({ // Clean up the element expando try { delete elem[ expando ]; - } catch(e){ + } catch( e ) { // IE has trouble directly removing the expando // but it's ok with using removeAttribute - if ( elem.removeAttribute ) + if ( elem.removeAttribute ) { elem.removeAttribute( expando ); + } } // Completely remove the data cache delete cache[ id ]; } }, + queue: function( elem, type, data ) { if( !elem ) return; @@ -106,7 +116,9 @@ jQuery.extend({ jQuery.fn.extend({ data: function( key, value ){ - if(typeof key === "undefined" && this.length) return jQuery.data(this[0], true); + if ( typeof key === "undefined" && this.length ) { + return jQuery.data( this[0] ); + } var parts = key.split("."); parts[1] = parts[1] ? "." + parts[1] : ""; @@ -155,4 +167,4 @@ jQuery.fn.extend({ clearQueue: function(type){ return this.queue( type || "fx", [] ); } -}); \ No newline at end of file +});