Refactor jQuery.data a bit to reduce property lookups
- Also added jQuery.isEmptyObject
This commit is contained in:
parent
d36d224cc5
commit
190812c3be
|
@ -291,6 +291,12 @@ jQuery.extend({
|
||||||
return this.constructor.call(obj) === Object;
|
return this.constructor.call(obj) === Object;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
isEmptyObject: function( obj ) {
|
||||||
|
var name = "";
|
||||||
|
for(name in obj) break;
|
||||||
|
return !name;
|
||||||
|
},
|
||||||
|
|
||||||
// check if an element is in a (or is an) XML document
|
// check if an element is in a (or is an) XML document
|
||||||
isXMLDoc: function( elem ) {
|
isXMLDoc: function( elem ) {
|
||||||
return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
|
return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
|
||||||
|
|
38
src/data.js
38
src/data.js
|
@ -8,27 +8,24 @@ jQuery.extend({
|
||||||
windowData :
|
windowData :
|
||||||
elem;
|
elem;
|
||||||
|
|
||||||
var id = elem[ expando ];
|
var id = elem[ expando ], cache = jQuery.cache;
|
||||||
|
|
||||||
// Compute a unique ID for the element
|
// Compute a unique ID for the element
|
||||||
if ( !id )
|
if(!id) id = elem[ expando ] = ++uuid;
|
||||||
id = elem[ expando ] = ++uuid;
|
|
||||||
|
|
||||||
// Only generate the data cache if we're
|
// Only generate the data cache if we're
|
||||||
// trying to access or manipulate it
|
// trying to access or manipulate it
|
||||||
if ( name && !jQuery.cache[ id ] )
|
if ( name && !cache[ id ] )
|
||||||
jQuery.cache[ id ] = {};
|
cache[ id ] = {};
|
||||||
|
|
||||||
|
var thisCache = cache[ id ];
|
||||||
|
|
||||||
// Prevent overriding the named cache with undefined values
|
// Prevent overriding the named cache with undefined values
|
||||||
if ( data !== undefined )
|
if ( data !== undefined ) thisCache[ name ] = data;
|
||||||
jQuery.cache[ id ][ name ] = data;
|
|
||||||
|
|
||||||
if(name === true) return jQuery.cache[ id ]
|
if(name === true) return thisCache
|
||||||
|
else if(name) return thisCache[name]
|
||||||
// Return the named cache data, or the ID for the element
|
else return id
|
||||||
return name ?
|
|
||||||
jQuery.cache[ id ][ name ] :
|
|
||||||
id;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
removeData: function( elem, name ) {
|
removeData: function( elem, name ) {
|
||||||
|
@ -36,21 +33,16 @@ jQuery.extend({
|
||||||
windowData :
|
windowData :
|
||||||
elem;
|
elem;
|
||||||
|
|
||||||
var id = elem[ expando ];
|
var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];
|
||||||
|
|
||||||
// If we want to remove a specific section of the element's data
|
// If we want to remove a specific section of the element's data
|
||||||
if ( name ) {
|
if ( name ) {
|
||||||
if ( jQuery.cache[ id ] ) {
|
if ( thisCache ) {
|
||||||
// Remove the section of cache data
|
// Remove the section of cache data
|
||||||
delete jQuery.cache[ id ][ name ];
|
delete thisCache[ name ];
|
||||||
|
|
||||||
// If we've removed all the data, remove the element's cache
|
// If we've removed all the data, remove the element's cache
|
||||||
name = "";
|
if( jQuery.isEmptyObject(thisCache) )
|
||||||
|
|
||||||
for ( name in jQuery.cache[ id ] )
|
|
||||||
break;
|
|
||||||
|
|
||||||
if ( !name )
|
|
||||||
jQuery.removeData( elem );
|
jQuery.removeData( elem );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,7 +59,7 @@ jQuery.extend({
|
||||||
}
|
}
|
||||||
|
|
||||||
// Completely remove the data cache
|
// Completely remove the data cache
|
||||||
delete jQuery.cache[ id ];
|
delete cache[ id ];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
queue: function( elem, type, data ) {
|
queue: function( elem, type, data ) {
|
||||||
|
|
Loading…
Reference in a new issue