X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fcore.js;h=edd108906c9721b6eced51eb9809d67e9e597ab5;hb=8e53f7b5d6716e60d8c8ea7e167f2b187aae9d89;hp=975d23c0db659e8d9465a31c557b895068e56c5e;hpb=230614b4df313493813d688b63ab68f3812a0030;p=jquery.git diff --git a/src/core.js b/src/core.js index 975d23c..edd1089 100644 --- a/src/core.js +++ b/src/core.js @@ -35,7 +35,7 @@ var jQuery = function( selector, context ) { // Keep a UserAgent string for use with jQuery.browser userAgent = navigator.userAgent, - // For matching the engine and version of thte browser + // For matching the engine and version of the browser browserMatch, // Has the ready events already been bound? @@ -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 ); @@ -661,8 +661,8 @@ jQuery.extend({ ret = { browser: "webkit", version: /webkit[\/ ]([\w.]+)/ }; } else if ( /opera/.test( ua ) ) { - ret = { browser: "opera", version: /opera[\/ ]([\w.]+)/ }; - + ret = { browser: "opera", version: /version/.test( ua ) ? /version[\/ ]([\w.]+)/ : /opera[\/ ]([\w.]+)/ }; + } else if ( /msie/.test( ua ) ) { ret = { browser: "msie", version: /msie ([\w.]+)/ }; @@ -772,10 +772,10 @@ function access( elems, key, value, exec, fn, pass ) { // Setting one attribute if ( value !== undefined ) { // Optionally, function values get executed if exec is true - exec = exec && jQuery.isFunction(value); + exec = !pass && 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;