clone: function( events ) {
// Do the clone
var ret = this.map(function(){
- if ( jQuery.browser.msie ) {
+ if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) {
// IE copies events bound via attachEvent when
// using cloneNode. Calling detachEvent on the
// clone will also remove the events from the orignal
},
not: function( selector ) {
- return this.pushStack(
- selector.constructor == String &&
- jQuery.multiFilter( selector, this, true ) ||
-
- jQuery.grep(this, function(elem) {
- return selector.constructor == Array || selector.jquery ?
- jQuery.inArray( elem, selector ) < 0 :
- elem != selector;
- }) );
+ if (selector.constructor == String)
+ // test special case where just one selector is passed in
+ if ( /^.[^:#\[\.]*$/.test(selector) )
+ return this.pushStack( jQuery.multiFilter( selector, this, true ) );
+ else
+ selector = jQuery.multiFilter( selector, this );
+
+ return this.pushStack( jQuery.removeFromArray( selector, this ) );
},
add: function( selector ) {
return -1;
},
+ removeFromArray: function( remove, from ) {
+ var isArrayLike = remove.length && remove[remove.length - 1] !== undefined;
+ return jQuery.grep(from, function(elem) {
+ return isArrayLike ? jQuery.inArray( elem, remove ) < 0 : elem != from;
+ });
+ },
+
merge: function( first, second ) {
// We have to loop this way because IE & Opera overwrite the length
// expando of getElementsByTagName
// Get document width or height
this[0] == document ?
- // Either scroll[Width/Height] or offset[Width/Height], whichever is greater (Mozilla reports scrollWidth the same as offsetWidth)
- Math.max( document.body[ "scroll" + name ], document.body[ "offset" + name ] ) :
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ Math.max(
+ Math.max(document.body["scroll" + name], document.documentElement["scroll" + name]),
+ Math.max(document.body["offset" + name], document.documentElement["offset" + name])
+ ) :
// Get or set width or height on the element
size == undefined ?