Merge branch 'master' of github.com:jquery/jquery
authorjeresig <jeresig@gmail.com>
Thu, 20 Jan 2011 16:58:52 +0000 (11:58 -0500)
committerjeresig <jeresig@gmail.com>
Thu, 20 Jan 2011 16:58:52 +0000 (11:58 -0500)
1  2 
src/core.js

diff --combined src/core.js
@@@ -15,9 -15,8 +15,9 @@@ var jQuery = function( selector, contex
        // A central reference to the root jQuery(document)
        rootjQuery,
  
 -      // A simple way to check for HTML strings
 -      quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$/,
 +      // A simple way to check for HTML strings or ID strings
 +      // (both of which we optimize for)
 +      quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,
  
        // Check if a string has a non-whitespace character in it
        rnotwhite = /\S/,
@@@ -93,70 -92,32 +93,70 @@@ jQuery.fn = jQuery.prototype = 
                        return this;
                }
  
 +              // The body element only exists once, optimize finding it
 +              if ( selector === "body" && !context && document.body ) {
 +                      this.context = document;
 +                      this[0] = document.body;
 +                      this.selector = "body";
 +                      this.length = 1;
 +                      return this;
 +              }
 +
                // Handle HTML strings
                if ( typeof selector === "string" ) {
 -                      // Are we dealing with HTML string
 -                      if ( (match = quickExpr.exec( selector )) ) {
 -                              context = context instanceof jQuery ? context[0] : context;
 -                              doc = (context ? context.ownerDocument || context : document);
 +                      // Are we dealing with HTML string or an ID?
 +                      match = quickExpr.exec( selector );
 +
 +                      // Verify a match, and that no context was specified for #id
 +                      if ( match && (match[1] || !context) ) {
  
 -                              // If a single string is passed in and it's a single tag
 -                              // just do a createElement and skip the rest
 -                              ret = rsingleTag.exec( selector );
 +                              // HANDLE: $(html) -> $(array)
 +                              if ( match[1] ) {
 +                                      context = context instanceof jQuery ? context[0] : context;
 +                                      doc = (context ? context.ownerDocument || context : document);
  
 -                              if ( ret ) {
 -                                      if ( jQuery.isPlainObject( context ) ) {
 -                                              selector = [ document.createElement( ret[1] ) ];
 -                                              jQuery.fn.attr.call( selector, context, true );
 +                                      // If a single string is passed in and it's a single tag
 +                                      // just do a createElement and skip the rest
 +                                      ret = rsingleTag.exec( selector );
 +
 +                                      if ( ret ) {
 +                                              if ( jQuery.isPlainObject( context ) ) {
 +                                                      selector = [ document.createElement( ret[1] ) ];
 +                                                      jQuery.fn.attr.call( selector, context, true );
 +
 +                                              } else {
 +                                                      selector = [ doc.createElement( ret[1] ) ];
 +                                              }
  
                                        } else {
 -                                              selector = [ doc.createElement( ret[1] ) ];
 +                                              ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
 +                                              selector = (ret.cacheable ? jQuery(ret.fragment).clone()[0] : ret.fragment).childNodes;
                                        }
  
 +                                      return jQuery.merge( this, selector );
 +                                      
 +                              // HANDLE: $("#id")
                                } else {
 -                                      ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
 -                                      selector = (ret.cacheable ? jQuery(ret.fragment).clone()[0] : ret.fragment).childNodes;
 -                              }
 +                                      elem = document.getElementById( match[2] );
 +
 +                                      // Check parentNode to catch when Blackberry 4.6 returns
 +                                      // nodes that are no longer in the document #6963
 +                                      if ( elem && elem.parentNode ) {
 +                                              // Handle the case where IE and Opera return items
 +                                              // by name instead of ID
 +                                              if ( elem.id !== match[2] ) {
 +                                                      return rootjQuery.find( selector );
 +                                              }
 +
 +                                              // Otherwise, we inject the element directly into the jQuery object
 +                                              this.length = 1;
 +                                              this[0] = elem;
 +                                      }
  
 -                              return jQuery.merge( this, selector );
 +                                      this.context = document;
 +                                      this.selector = selector;
 +                                      return this;
 +                              }
  
                        // HANDLE: $(expr, $(...))
                        } else if ( !context || context.jquery ) {
@@@ -399,7 -360,7 +399,7 @@@ jQuery.extend(
                        }
  
                        // If there are functions bound, to execute
-                       readyList.fire( document , [ jQuery ] );
+                       readyList.resolveWith( document , [ jQuery ] );
  
                        // Trigger any bound ready events
                        if ( jQuery.fn.trigger ) {
                                                }
  
                                                if ( _fired ) {
-                                                       deferred.fire( _fired[ 0 ] , _fired[ 1 ] );
+                                                       deferred.resolveWith( _fired[ 0 ] , _fired[ 1 ] );
                                                }
                                        }
  
                                },
  
                                // resolve with given context and args
-                               fire: function( context , args ) {
+                               resolveWith: function( context , args ) {
                                        if ( ! cancelled && ! fired && ! firing ) {
  
                                                firing = 1;
  
                                // resolve with this as context and given arguments
                                resolve: function() {
-                                       deferred.fire( jQuery.isFunction( this.promise ) ? this.promise() : this , arguments );
+                                       deferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this , arguments );
                                        return this;
                                },
  
                                return this;
                        },
                        fail: failDeferred.done,
-                       fireReject: failDeferred.fire,
+                       rejectWith: failDeferred.resolveWith,
                        reject: failDeferred.resolve,
                        isRejected: failDeferred.isResolved,
                        // Get a promise for this deferred
                                        args = arguments;
                                        resolveArray[ index ] = args.length > 1 ? slice.call( args , 0 ) : value;
                                        if( ! --length ) {
-                                               deferred.fire( promise, resolveArray );
+                                               deferred.resolveWith( promise, resolveArray );
                                        }
                                }).fail( function() {
-                                       deferred.fireReject( promise, arguments );
+                                       deferred.rejectWith( promise, arguments );
                                });
                                return !deferred.isRejected();
                        });