rtrim = /^\s+|\s+$/g,
// Match a standalone tag
- rsingleTag = /^<(\w+)\s*\/?>$/,
+ rsingleTag = /<(\w+)\s*\/?>(?:<\/\1>)?$/,
// Keep a UserAgent string for use with jQuery.browser
userAgent = navigator.userAgent.toLowerCase(),
// Save a reference to some core methods
toString = Object.prototype.toString,
+ hasOwnProperty = Object.prototype.hasOwnProperty,
push = Array.prototype.push,
slice = Array.prototype.slice,
indexOf = Array.prototype.indexOf;
return this;
}
- // $("body"): Shortcut for quickly finding the body element
- if ( selector === "body" && !context && document.body ) {
- selector = document.body;
- }
-
// Handle $(DOMElement)
if ( selector.nodeType ) {
this.context = this[0] = selector;
- this.length++;
+ this.length = 1;
return this;
}
}
// Otherwise, we inject the element directly into the jQuery object
- this.length++;
+ this.length = 1;
this[0] = elem;
}
},
is: function( selector ) {
- return !!selector && jQuery.multiFilter( selector, this ).length > 0;
+ return !!selector && jQuery.filter( selector, this ).length > 0;
},
// For internal use only.
clone = src;
} else if ( jQuery.isArray(copy) ) {
clone = [];
- } else if ( jQuery.isObject(copy) ) {
+ } else if ( jQuery.isObjectLiteral(copy) ) {
clone = {};
} else {
clone = copy;
return toString.call(obj) === "[object Array]";
},
- isObject: function( obj ) {
- return this.constructor.call(obj) === Object;
+ isObjectLiteral: function( obj ) {
+ if ( toString.call(obj) !== "[object Object]" ) {
+ return false;
+ }
+
+ // 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
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwnProperty.call( obj, key );
},
isEmptyObject: function( obj ) {
},
inArray: function( elem, array ) {
+ if ( array.indexOf ) {
+ return array.indexOf( elem );
+ }
+
for ( var i = 0, length = array.length; i < length; i++ ) {
if ( array[ i ] === elem ) {
return i;
// expando of getElementsByTagName
var i = 0, elem, pos = first.length;
- // Also, we need to make sure that the correct elements are being returned
- // (IE returns comment nodes in a '*' query)
- if ( !jQuery.support.getAll ) {
- while ( (elem = second[ i++ ]) != null ) {
- if ( elem.nodeType !== 8 ) {
- first[ pos++ ] = elem;
- }
- }
-
- } else {
- while ( (elem = second[ i++ ]) != null ) {
- first[ pos++ ] = elem;
- }
+ while ( (elem = second[ i++ ]) != null ) {
+ first[ pos++ ] = elem;
}
return first;
},
- unique: function( array ) {
- var ret = [], done = {}, id;
-
- try {
- for ( var i = 0, length = array.length; i < length; i++ ) {
- id = jQuery.data( array[ i ] );
-
- if ( !done[ id ] ) {
- done[ id ] = true;
- ret.push( array[ i ] );
- }
- }
- } catch( e ) {
- ret = array;
- }
-
- return ret;
- },
-
grep: function( elems, callback, inv ) {
var ret = [];