Prevent a single event object from being fixed more than once
[jquery.git] / src / core.js
index 6308a99..c5fb865 100644 (file)
@@ -86,17 +86,8 @@ jQuery.fn = jQuery.prototype = {
                // Shortcut for document ready
                } else if ( jQuery.isFunction( selector ) )
                        return new jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector );
-
-               return this.setArray(
-                       // HANDLE: $(array)
-                       selector.constructor == Array && selector ||
-
-                       // HANDLE: $(arraylike)
-                       // Watch for when an array-like object, contains DOM nodes, is passed in as the selector
-                       (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) ||
-
-                       // HANDLE: $(*)
-                       [ selector ] );
+               
+               return this.setArray(jQuery.makeArray(selector));
        },
        
        // The current version of jQuery being used
@@ -1123,12 +1114,15 @@ jQuery.extend({
        makeArray: function( array ) {
                var ret = [];
 
-               // Need to use typeof to fight Safari childNodes crashes
-               if ( array.constructor != Array )
-                       for ( var i = 0, length = array.length; i < length; i++ )
-                               ret.push( array[ i ] );
-               else
-                       ret = array.slice( 0 );
+               if( array != undefined ){
+                       var i = array.length;
+                       //the window, strings and functions also have 'length'
+                       if( i != undefined && typeof array == 'object' && array != window )
+                               while( i )
+                                       ret[--i] = array[i];
+                       else
+                               ret[0] = array;
+               }
 
                return ret;
        },