diff options
author | jeresig <jeresig@gmail.com> | 2010-02-13 06:32:20 -0500 |
---|---|---|
committer | jeresig <jeresig@gmail.com> | 2010-02-13 06:32:20 -0500 |
commit | 9195107dbb13ad34ae4e9f7cb1df5d79e4748560 (patch) | |
tree | 30c8b42fe799b8df75e9b562ad24d0a035ed410b /src | |
parent | da966573c3f3cb083c48cd3ead88e7542937d4df (diff) | |
download | jquery-9195107dbb13ad34ae4e9f7cb1df5d79e4748560.tar.gz jquery-9195107dbb13ad34ae4e9f7cb1df5d79e4748560.zip |
Clean up expando removal code - only try to delete the expando from an element if it's possible.
Diffstat (limited to 'src')
-rw-r--r-- | src/data.js | 28 | ||||
-rw-r--r-- | src/manipulation.js | 8 | ||||
-rw-r--r-- | src/support.js | 12 |
3 files changed, 19 insertions, 29 deletions
diff --git a/src/data.js b/src/data.js index 20c134a6d..0e243ca61 100644 --- a/src/data.js +++ b/src/data.js @@ -79,15 +79,8 @@ jQuery.extend({ // Otherwise, we want to remove all of the element's data } else { - // Clean up the element expando - try { + if ( jQuery.support.deleteExpando ) { delete elem[ expando ]; - } catch( e ) { - // IE has trouble directly removing the expando - // but it's ok with using removeAttribute - if ( elem.removeAttribute ) { - elem.removeAttribute( expando ); - } } // Completely remove the data cache @@ -132,22 +125,3 @@ jQuery.fn.extend({ }); } }); - -var removeExpando = function( elem ) { - delete elem[ expando ]; -}; - -try { - var div = document.createElement("div"); - div[ expando ] = true; - delete div[ expando ]; - -} catch( e ) { - // IE has trouble directly removing the expando - // but it's ok with using removeAttribute - removeExpando = function( elem ) { - if ( elem.removeAttribute ) { - elem.removeAttribute( expando ); - } - }; -}
\ No newline at end of file diff --git a/src/manipulation.js b/src/manipulation.js index 4e7a31ed4..4eb19eaf0 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -547,7 +547,9 @@ jQuery.extend({ }, cleanData: function( elems ) { - var data, id, cache = jQuery.cache, special = jQuery.event.special; + var data, id, cache = jQuery.cache, + special = jQuery.event.special, + deleteExpando = jQuery.support.deleteExpando; for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { id = elem[ jQuery.expando ]; @@ -566,7 +568,9 @@ jQuery.extend({ } } - removeExpando( elem ); + if ( deleteExpando ) { + delete elem[ expando ]; + } delete cache[ id ]; } diff --git a/src/support.js b/src/support.js index c9ff58c36..c9bfdf0b9 100644 --- a/src/support.js +++ b/src/support.js @@ -59,6 +59,7 @@ parentNode: div.removeChild( div.appendChild( document.createElement("div") ) ).parentNode === null, // Will be defined later + deleteExpando: true, checkClone: false, scriptEval: false, noCloneEvent: true, @@ -110,6 +111,17 @@ document.body.appendChild( div ); jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2; document.body.removeChild( div ).style.display = 'none'; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + div.test = 1; + delete doc.test; + + } catch(e) { + jQuery.support.deleteExpando = false; + } + div = null; }); |