Fixed typo in logic, also disabled function setters in this case to allow the functi...
[jquery.git] / src / core.js
index 58cbbc7..edd1089 100644 (file)
@@ -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?
@@ -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;