Commit 9c2c47d7 authored by John Resig's avatar John Resig

etooled the jQuery constructor, makes it work better for embedding (Bug...

etooled the jQuery constructor, makes it work better for embedding (Bug #1585). Also took the opportunity to do some renaming in the constructor and init.
parent d5f2129a
...@@ -13,12 +13,11 @@ ...@@ -13,12 +13,11 @@
if ( typeof jQuery != "undefined" ) if ( typeof jQuery != "undefined" )
var _jQuery = jQuery; var _jQuery = jQuery;
var jQuery = window.jQuery = function(a,c) { var jQuery = window.jQuery = function(selector, context) {
// If the context is global, return a new object // If the context is a namespace object, return a new object
if ( window == this || !this.init ) return this instanceof jQuery ?
return new jQuery(a,c); this.init(selector, context) :
new jQuery(selector, context);
return this.init(a,c);
}; };
// Map over the $ in case of overwrite // Map over the $ in case of overwrite
...@@ -31,17 +30,17 @@ window.$ = jQuery; ...@@ -31,17 +30,17 @@ window.$ = jQuery;
var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/; var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;
jQuery.fn = jQuery.prototype = { jQuery.fn = jQuery.prototype = {
init: function(a,c) { init: function(selector, context) {
// Make sure that a selection was provided // Make sure that a selection was provided
a = a || document; selector = selector || document;
// Handle HTML strings // Handle HTML strings
if ( typeof a == "string" ) { if ( typeof selector == "string" ) {
var m = quickExpr.exec(a); var m = quickExpr.exec(selector);
if ( m && (m[1] || !c) ) { if ( m && (m[1] || !context) ) {
// HANDLE: $(html) -> $(array) // HANDLE: $(html) -> $(array)
if ( m[1] ) if ( m[1] )
a = jQuery.clean( [ m[1] ], c ); selector = jQuery.clean( [ m[1] ], context );
// HANDLE: $("#id") // HANDLE: $("#id")
else { else {
...@@ -50,35 +49,35 @@ jQuery.fn = jQuery.prototype = { ...@@ -50,35 +49,35 @@ jQuery.fn = jQuery.prototype = {
// Handle the case where IE and Opera return items // Handle the case where IE and Opera return items
// by name instead of ID // by name instead of ID
if ( tmp.id != m[3] ) if ( tmp.id != m[3] )
return jQuery().find( a ); return jQuery().find( selector );
else { else {
this[0] = tmp; this[0] = tmp;
this.length = 1; this.length = 1;
return this; return this;
} }
else else
a = []; selector = [];
} }
// HANDLE: $(expr) // HANDLE: $(expr)
} else } else
return new jQuery( c ).find( a ); return new jQuery( context ).find( selector );
// HANDLE: $(function) // HANDLE: $(function)
// Shortcut for document ready // Shortcut for document ready
} else if ( jQuery.isFunction(a) ) } else if ( jQuery.isFunction(selector) )
return new jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ]( a ); return new jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ]( selector );
return this.setArray( return this.setArray(
// HANDLE: $(array) // HANDLE: $(array)
a.constructor == Array && a || selector.constructor == Array && selector ||
// HANDLE: $(arraylike) // HANDLE: $(arraylike)
// Watch for when an array-like object is passed as the selector // Watch for when an array-like object is passed as the selector
(a.jquery || a.length && a != window && !a.nodeType && a[0] != undefined && a[0].nodeType) && jQuery.makeArray( a ) || (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) ||
// HANDLE: $(*) // HANDLE: $(*)
[ a ] ); [ selector ] );
}, },
jquery: "@VERSION", jquery: "@VERSION",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment