A first pass at making sure that all the setter function arguments receive the index...
[jquery.git] / src / core.js
index 975d23c..831570e 100644 (file)
@@ -316,10 +316,10 @@ jQuery.extend = jQuery.fn.extend = function() {
                                        continue;
                                }
 
-                               // Recurse if we're merging object literal values
-                               if ( deep && copy && jQuery.isPlainObject(copy) ) {
-                                       // Don't extend not object literals
-                                       var clone = src && jQuery.isPlainObject(src) ? src : {};
+                               // Recurse if we're merging object literal values or arrays
+                               if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {
+                                       var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src
+                                               : jQuery.isArray(copy) ? [] : {};
 
                                        // Never move original objects, clone them
                                        target[ name ] = jQuery.extend( deep, clone, copy );
@@ -775,7 +775,7 @@ function access( elems, key, value, exec, fn, pass ) {
                exec = exec && jQuery.isFunction(value);
                
                for ( var i = 0; i < length; i++ ) {
-                       fn( elems[i], key, exec ? value.call( elems[i], i ) : value, pass );
+                       fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
                }
                
                return elems;