Standardizing on .test() and .exec() - moving away from using .match() for RegExp...
[jquery.git] / src / core.js
index b51886f..2a064c2 100644 (file)
@@ -39,16 +39,12 @@ jQuery.fn = jQuery.prototype = {
                var match, elem, ret;
 
                // Handle $(""), $(null), or $(undefined)
-               if ( !selector ) {
-                       this.length = 0;
-                       return this;
-               }
+               if ( !selector ) return this;
 
                // Handle $(DOMElement)
                if ( selector.nodeType ) {
-                       this[0] = selector;
-                       this.length = 1;
-                       this.context = selector;
+                       this.context = this[0] = selector;
+                       this.length++;
                        return this;
                }
 
@@ -68,17 +64,16 @@ jQuery.fn = jQuery.prototype = {
                                } else {
                                        elem = document.getElementById( match[3] );
 
-                                       // Handle the case where IE and Opera return items
-                                       // by name instead of ID
-                                       if ( elem && elem.id !== match[3] ) {
-                                               return rootjQuery.find( selector );
-                                       }
-
-                                       // Otherwise, we inject the element directly into the jQuery object
-                                       this.length = elem ? 1 : 0;
                                        if ( elem ) {
+                                               // Handle the case where IE and Opera return items
+                                               // by name instead of ID
+                                               if ( elem.id !== match[3] ) return rootjQuery.find( selector );
+
+                                               // Otherwise, we inject the element directly into the jQuery object
+                                               this.length++;
                                                this[0] = elem;
                                        }
+
                                        this.context = document;
                                        this.selector = selector;
                                        return this;
@@ -117,6 +112,9 @@ jQuery.fn = jQuery.prototype = {
        // The current version of jQuery being used
        jquery: "@VERSION",
 
+       // The default length of a jQuery object is 0
+       length: 0,
+
        // The number of elements contained in the matched element set
        size: function() {
                return this.length;
@@ -133,7 +131,7 @@ jQuery.fn = jQuery.prototype = {
                        this.toArray() :
 
                        // Return just the object
-                       ( num < 0 ? this.toArray.call(this, num)[0] : this[ num ] );
+                       ( num < 0 ? this.toArray(num)[ 0 ] : this[ num ] );
        },
 
        // Take an array of elements and push it onto the stack
@@ -291,6 +289,12 @@ jQuery.extend({
                return this.constructor.call(obj) === Object;
        },
 
+       isEmptyObject: function( obj ) {
+               for(var name in obj)
+                       return false;
+               return true;
+       },
+
        // check if an element is in a (or is an) XML document
        isXMLDoc: function( elem ) {
                return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
@@ -470,7 +474,7 @@ jQuery.extend({
        // It's included for backwards compatibility and plugins,
        // although they should work to migrate away.
        browser: {
-               version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
+               version: (/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/.exec(userAgent) || [0,'0'])[1],
                safari: /webkit/.test( userAgent ),
                opera: /opera/.test( userAgent ),
                msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),