jQuery.fn = jQuery.prototype = {
init: function( selector, context ) {
- var match, elem, ret, doc, parent;
+ var match, elem, ret, doc;
// Handle $(""), $(null), or $(undefined)
if ( !selector ) {
ret = rsingleTag.exec( selector );
if ( ret ) {
- selector = [ doc.createElement( ret[1] ) ];
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
} else {
ret = buildFragment( [ match[1] ], [ doc ] );
- parent = ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment;
- selector = [];
-
- while ( parent.firstChild ) {
- selector.push( parent.removeChild( parent.firstChild ) );
- }
+ selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
}
// HANDLE: $("#id")
return this.length;
},
- toArray: function(){
+ toArray: function() {
return slice.call( this, 0 );
},
},
map: function( callback ) {
- return this.pushStack( jQuery.map(this, function(elem, i){
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
return callback.call( elem, i, elem );
}));
},
},
bindReady: function() {
- if ( readyBound ) { return; }
+ if ( readyBound ) {
+ return;
+ }
+
readyBound = true;
// Catch cases where $(document).ready() is called after the
try {
toplevel = window.frameElement == null;
- } catch(e){}
+ } catch(e) {}
if ( document.documentElement.doScroll && toplevel ) {
doScrollCheck();
},
isPlainObject: function( obj ) {
- if ( toString.call(obj) !== "[object Object]" || typeof obj.nodeType === "number" ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) {
return false;
}
- // not own constructor property must be Object
+ // Not own constructor property must be Object
if ( obj.constructor
&& !hasOwnProperty.call(obj, "constructor")
&& !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
return false;
}
- //own properties are iterated firstly,
- //so to speed up, we can test last one if it is own or not
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
var key;
for ( key in obj ) {}
// Use of jQuery.browser is frowned upon.
// More details: http://docs.jquery.com/Utilities/jQuery.browser
browser: {
- version: (/.*?(?:firefox|safari|opera|msie)[\/ ]([\d.]+)/.exec(userAgent) || [0,'0'])[1],
+ version: (/.*?(?:firefox|safari|opera|msie)[\/ ]([\d.]+)/.exec(userAgent) || [0,"0"])[1],
safari: /safari/.test( userAgent ),
opera: /opera/.test( userAgent ),
msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
// Mutifunctional method to get and set values to a collection
// The value/s can be optionally by executed if its a function
-function access( elems, key, value, exec, fn ) {
+function access( elems, key, value, exec, fn, pass ) {
var length = elems.length;
// Setting many attributes
if ( typeof key === "object" ) {
for ( var k in key ) {
- access( elems, k, key[k], exec, fn );
+ access( elems, k, key[k], exec, fn, value );
}
return elems;
}
exec = exec && jQuery.isFunction(value);
for ( var i = 0; i < length; i++ ) {
- fn( elems[i], key, exec ? value.call( elems[i], i ) : value );
+ fn( elems[i], key, exec ? value.call( elems[i], i ) : value, pass );
}
return elems;