if ( selector.nodeType ) {
this[0] = selector;
this.length = 1;
+ this.context = selector;
return this;
}
// Handle HTML strings
return jQuery().find( selector );
// Otherwise, we inject the element directly into the jQuery object
- return jQuery( elem );
+ var ret = jQuery( elem );
+ ret.context = document;
+ ret.selector = selector;
+ return ret;
}
selector = [];
}
return this.setArray(jQuery.makeArray(selector));
},
+ // Start with an empty selector
+ selector: "",
+
// The current version of jQuery being used
jquery: "@VERSION",
// Take an array of elements and push it onto the stack
// (returning the new matched element set)
- pushStack: function( elems ) {
+ pushStack: function( elems, name, selector ) {
// Build a new jQuery matched element set
var ret = jQuery( elems );
// Add the old object onto the stack (as a reference)
ret.prevObject = this;
+ ret.context = this.context;
+
+ if ( name === "find" )
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ else if ( name )
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+
// Return the newly-formed element set
return ret;
},
return this.pushStack( /[^+>] [^+>]/.test( selector ) ?
jQuery.unique( elems ) :
- elems );
+ elems, "find", selector );
},
clone: function( events ) {
return selector.call( elem, i );
}) ||
- jQuery.multiFilter( selector, this ) );
+ jQuery.multiFilter( selector, this ), "filter", selector );
},
not: function( selector ) {
if ( typeof selector === "string" )
// test special case where just one selector is passed in
if ( isSimple.test( selector ) )
- return this.pushStack( jQuery.multiFilter( selector, this, true ) );
+ return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
else
selector = jQuery.multiFilter( selector, this );
},
hasClass: function( selector ) {
- return this.is( "." + selector );
+ return !!selector && this.is( "." + selector );
},
val: function( value ) {
},
slice: function() {
- return this.pushStack( Array.prototype.slice.apply( this, arguments ) );
+ return this.pushStack( Array.prototype.slice.apply( this, arguments ),
+ "slice", Array.prototype.slice.call(arguments).join(",") );
},
map: function( callback ) {
// Return the named cache data, or the ID for the element
return name ?
- jQuery.cache[ id ][ name ] :
+ jQuery.cache[ id ][ name ] || null :
id;
},
context = context || document;
// !context.createElement fails in IE with an error but returns typeof 'object'
- if ( context.createElement === undefined )
+ if ( typeof context.createElement === "undefined" )
context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
jQuery.each(elems, function(i, elem){
// Also, we need to make sure that the correct elements are being returned
// (IE returns comment nodes in a '*' query)
if ( jQuery.browser.msie ) {
- while ( elem = second[ i++ ] )
+ while ( (elem = second[ i++ ]) )
if ( elem.nodeType != 8 )
first[ pos++ ] = elem;
} else
- while ( elem = second[ i++ ] )
+ while ( (elem = second[ i++ ]) )
first[ pos++ ] = elem;
return first;
if ( selector && typeof selector == "string" )
ret = jQuery.multiFilter( selector, ret );
- return this.pushStack( jQuery.unique( ret ) );
+ return this.pushStack( jQuery.unique( ret ), name, selector );
};
});