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;
}
} 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;
// 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;
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
// 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 ),