git.asbjorn.biz
/
jquery.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
jquery core: closes #3485. Fixing a memory leak on IE.
[jquery.git]
/
src
/
core.js
diff --git
a/src/core.js
b/src/core.js
index
c095f74
..
9279d17
100644
(file)
--- a/
src/core.js
+++ b/
src/core.js
@@
-90,9
+90,6
@@
jQuery.fn = jQuery.prototype = {
return this.length;
},
return this.length;
},
- // The number of elements contained in the matched element set
- length: 0,
-
// Get the Nth element in the matched element set OR
// Get the whole matched element set as a clean array
get: function( num ) {
// Get the Nth element in the matched element set OR
// Get the whole matched element set as a clean array
get: function( num ) {
@@
-357,11
+354,13
@@
jQuery.fn = jQuery.prototype = {
},
val: function( value ) {
},
val: function( value ) {
- if ( value == undefined ) {
-
- if ( this.length ) {
- var elem = this[0];
+ if ( value == undefined ) {
+ var elem = this[0];
+ if ( elem ) {
+ if( jQuery.nodeName( elem, 'option' ) )
+ return (elem.attributes.value || {}).specified ? elem.value : elem.text;
+
// We need to handle select boxes special
if ( jQuery.nodeName( elem, "select" ) ) {
var index = elem.selectedIndex,
// We need to handle select boxes special
if ( jQuery.nodeName( elem, "select" ) ) {
var index = elem.selectedIndex,
@@
-379,7
+378,7
@@
jQuery.fn = jQuery.prototype = {
if ( option.selected ) {
// Get the specifc value for the option
if ( option.selected ) {
// Get the specifc value for the option
- value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value;
+ value = jQuery(option).val();
// We don't need an array for one selects
if ( one )
// We don't need an array for one selects
if ( one )
@@
-390,11
+389,11
@@
jQuery.fn = jQuery.prototype = {
}
}
}
}
- return values;
+ return values;
+ }
// Everything else, we just grab the value
// Everything else, we just grab the value
- } else
- return (this[0].value || "").replace(/\r/g, "");
+ return (elem.value || "").replace(/\r/g, "");
}
}
@@
-613,10
+612,14
@@
jQuery.extend({
},
// See test/unit/core.js for details concerning this function.
},
// See test/unit/core.js for details concerning this function.
- // Since 1.3 DOM methods and function like alert
+ // Since version 1.3, DOM methods and functions like alert
// aren't supported. They return false on IE (#2968).
// aren't supported. They return false on IE (#2968).
+
+ // Memory leaks appear in IE6 when applying instanceof
+ // to the window, document or any other COM object (#3485)
+ // http://ajaxian.com/archives/working-aroung-the-instanceof-memory-leak
isFunction: function( fn ) {
isFunction: function( fn ) {
- return fn instanceof Function;
+ return !!fn && !!fn.hasOwnProperty && fn instanceof Function;
},
// check if an element is in a (or is an) XML document
},
// check if an element is in a (or is an) XML document
@@
-1126,13
+1129,15
@@
jQuery.extend({
return (text || "").replace( /^\s+|\s+$/g, "" );
},
return (text || "").replace( /^\s+|\s+$/g, "" );
},
+ // NOTE: Due to the conflict with Scriptaculous (http://dev.jquery.com/ticket/3248)
+ // We remove support for functions since jQuery 1.3
makeArray: function( array ) {
var ret = [];
if( array != null ){
var i = array.length;
makeArray: function( array ) {
var ret = [];
if( array != null ){
var i = array.length;
- //the window, strings and functions also have 'length'
- if( i == null || array.split || array.setInterval || array.call )
+ // The window, strings (and functions) also have 'length'
+ if( i == null || typeof array == 'string' || array.setInterval )
ret[0] = array;
else
while( i )
ret[0] = array;
else
while( i )