jquery core: declared undefined locally, to speed up references, and allow munging...
[jquery.git] / src / core.js
index 9752fb1..b9a2fed 100644 (file)
@@ -24,7 +24,10 @@ var jQuery = window.jQuery = window.$ = function( selector, context ) {
 var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,
 
 // Is it a simple selector
-       isSimple = /^.[^:#\[\.]*$/;
+       isSimple = /^.[^:#\[\.]*$/,
+
+// Will speed up references to undefined, and allows munging its name. 
+       undefined;
 
 jQuery.fn = jQuery.prototype = {
        init: function( selector, context ) {
@@ -140,12 +143,10 @@ jQuery.fn = jQuery.prototype = {
                var ret = -1;
 
                // Locate the position of the desired element
-               this.each(function(i){
-                       if ( this == elem )
-                               ret = i;
-               });
-
-               return ret;
+               return jQuery.inArray( 
+                       // If it receives a jQuery object, the first element is used
+                       elem && elem.jquery ? elem[0] : elem
+               , this );
        },
 
        attr: function( name, value, type ) {
@@ -339,12 +340,12 @@ jQuery.fn = jQuery.prototype = {
        },
 
        add: function( selector ) {
-               return !selector ? this : this.pushStack( jQuery.merge( 
+               return this.pushStack( jQuery.unique( jQuery.merge( 
                        this.get(),
-                       selector.constructor == String ? 
-                               jQuery( selector ).get() :
-                               selector.length != undefined && (!selector.nodeName || jQuery.nodeName(selector, "form")) ?
-                                       selector : [selector] ) );
+                       typeof selector == 'string' ? 
+                               jQuery( selector ) :
+                               jQuery.makeArray( selector )
+               )));
        },
 
        is: function( selector ) {
@@ -1111,8 +1112,8 @@ jQuery.extend({
 
                if( array != null ){
                        var i = array.length;
-                       //the window, forms, strings and functions also have 'length'
-                       if( i == null || array.split || array.setInterval || array.call || array.elements )
+                       //the window, strings and functions also have 'length'
+                       if( i == null || array.split || array.setInterval || array.call )
                                ret[0] = array;
                        else
                                while( i )
@@ -1124,7 +1125,8 @@ jQuery.extend({
 
        inArray: function( elem, array ) {
                for ( var i = 0, length = array.length; i < length; i++ )
-                       if ( array[ i ] == elem )
+               // Use === because on IE, window == document
+                       if ( array[ i ] === elem )
                                return i;
 
                return -1;