aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorjeresig <jeresig@gmail.com>2010-02-13 06:32:20 -0500
committerjeresig <jeresig@gmail.com>2010-02-13 06:32:20 -0500
commit9195107dbb13ad34ae4e9f7cb1df5d79e4748560 (patch)
tree30c8b42fe799b8df75e9b562ad24d0a035ed410b /src
parentda966573c3f3cb083c48cd3ead88e7542937d4df (diff)
downloadjquery-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.js28
-rw-r--r--src/manipulation.js8
-rw-r--r--src/support.js12
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;
});