Standardize on using double-quotes for string literals.
[jquery.git] / src / core.js
index 1edf98e..944e8a9 100644 (file)
@@ -84,7 +84,13 @@ jQuery.fn = jQuery.prototype = {
                                        ret = rsingleTag.exec( selector );
 
                                        if ( ret ) {
-                                               selector = [ doc.createElement( ret[1] ) ];
+                                               if ( jQuery.isPlainObject( context ) ) {
+                                                       selector = [ document.createElement( ret[1] ) ];
+                                                       jQuery.fn.attr.call( selector, context, true );
+
+                                               } else {
+                                                       selector = [ doc.createElement( ret[1] ) ];
+                                               }
 
                                        } else {
                                                ret = buildFragment( [ match[1] ], [ doc ] );
@@ -158,7 +164,7 @@ jQuery.fn = jQuery.prototype = {
                return this.length;
        },
 
-       toArray: function(){
+       toArray: function() {
                return slice.call( this, 0 );
        },
 
@@ -252,7 +258,7 @@ jQuery.fn = jQuery.prototype = {
        },
 
        map: function( callback ) {
-               return this.pushStack( jQuery.map(this, function(elem, i){
+               return this.pushStack( jQuery.map(this, function( elem, i ) {
                        return callback.call( elem, i, elem );
                }));
        },
@@ -373,7 +379,10 @@ jQuery.extend({
        },
        
        bindReady: function() {
-               if ( readyBound ) { return; }
+               if ( readyBound ) {
+                       return;
+               }
+
                readyBound = true;
 
                // Catch cases where $(document).ready() is called after the
@@ -405,7 +414,7 @@ jQuery.extend({
 
                        try {
                                toplevel = window.frameElement == null;
-                       } catch(e){}
+                       } catch(e) {}
 
                        if ( document.documentElement.doScroll && toplevel ) {
                                doScrollCheck();
@@ -425,19 +434,22 @@ jQuery.extend({
        },
 
        isPlainObject: function( obj ) {
-               if ( toString.call(obj) !== "[object Object]" || typeof obj.nodeType === "number" ) {
+               // Must be an Object.
+               // Because of IE, we also have to check the presence of the constructor property.
+               // Make sure that DOM nodes and window objects don't pass through, as well
+               if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) {
                        return false;
                }
                
-               // not own constructor property must be Object
+               // Not own constructor property must be Object
                if ( obj.constructor
                        && !hasOwnProperty.call(obj, "constructor")
                        && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
                        return false;
                }
                
-               //own properties are iterated firstly,
-               //so to speed up, we can test last one if it is own or not
+               // Own properties are enumerated firstly, so to speed up,
+               // if last one is own, then all properties are own.
        
                var key;
                for ( key in obj ) {}
@@ -605,7 +617,7 @@ jQuery.extend({
        // Use of jQuery.browser is frowned upon.
        // More details: http://docs.jquery.com/Utilities/jQuery.browser
        browser: {
-               version: (/.*?(?:firefox|safari|opera|msie)[\/ ]([\d.]+)/.exec(userAgent) || [0,'0'])[1],
+               version: (/.*?(?:firefox|safari|opera|msie)[\/ ]([\d.]+)/.exec(userAgent) || [0,"0"])[1],
                safari: /safari/.test( userAgent ),
                opera: /opera/.test( userAgent ),
                msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
@@ -685,13 +697,13 @@ function evalScript( i, elem ) {
 
 // Mutifunctional method to get and set values to a collection
 // The value/s can be optionally by executed if its a function
-function access( elems, key, value, exec, fn ) {
+function access( elems, key, value, exec, fn, pass ) {
        var length = elems.length;
        
        // Setting many attributes
        if ( typeof key === "object" ) {
                for ( var k in key ) {
-                       access( elems, k, key[k], exec, fn );
+                       access( elems, k, key[k], exec, fn, value );
                }
                return elems;
        }
@@ -702,7 +714,7 @@ function access( elems, key, value, exec, fn ) {
                exec = exec && jQuery.isFunction(value);
                
                for ( var i = 0; i < length; i++ ) {
-                       fn( elems[i], key, exec ? value.call( elems[i], i ) : value );
+                       fn( elems[i], key, exec ? value.call( elems[i], i ) : value, pass );
                }
                
                return elems;