X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fcore.js;h=7ac4ad75b85a7ef4b570dd2dcfd0443f023198ef;hb=6a25c20f5cdf2eba12d204517598a9e1386ab3a6;hp=30820bf9ee1952ddb9c0cbed6192072361a6e0d3;hpb=da33a981c6fb18a195377d55a6d243e2de887f45;p=jquery.git diff --git a/src/core.js b/src/core.js index 30820bf..7ac4ad7 100644 --- a/src/core.js +++ b/src/core.js @@ -29,6 +29,9 @@ window.$ = jQuery; // (both of which we optimize for) var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/; +// Is it a simple selector +var isSimple = /^.[^:#\[\.]*$/; + jQuery.fn = jQuery.prototype = { init: function( selector, context ) { // Make sure that a selection was provided @@ -342,14 +345,16 @@ jQuery.fn = jQuery.prototype = { }, not: function( selector ) { - if (selector.constructor == String) + if ( selector.constructor == String ) // test special case where just one selector is passed in - if ( /^.[^:#\[\.]*$/.test(selector) ) + if ( isSimple.test( selector ) ) return this.pushStack( jQuery.multiFilter( selector, this, true ) ); else selector = jQuery.multiFilter( selector, this ); - return this.pushStack( jQuery.removeFromArray( selector, this ) ); + return this.filter(function() { + return jQuery.inArray( this, selector ) < 0; + }); }, add: function( selector ) { @@ -413,31 +418,32 @@ jQuery.fn = jQuery.prototype = { } - } else - return this.each(function(){ - if ( this.nodeType != 1 ) - return; + } - if ( value.constructor == Array && /radio|checkbox/.test( this.type ) ) - this.checked = (jQuery.inArray(this.value, value) >= 0 || - jQuery.inArray(this.name, value) >= 0); + return this.each(function(){ + if ( this.nodeType != 1 ) + return; - else if ( jQuery.nodeName( this, "select" ) ) { - var values = value.constructor == Array ? - value : - [ value ]; + if ( value.constructor == Array && /radio|checkbox/.test( this.type ) ) + this.checked = (jQuery.inArray(this.value, value) >= 0 || + jQuery.inArray(this.name, value) >= 0); - jQuery( "option", this ).each(function(){ - this.selected = (jQuery.inArray( this.value, values ) >= 0 || - jQuery.inArray( this.text, values ) >= 0); - }); + else if ( jQuery.nodeName( this, "select" ) ) { + var values = value.constructor == Array ? + value : + [ value ]; - if ( !values.length ) - this.selectedIndex = -1; + jQuery( "option", this ).each(function(){ + this.selected = (jQuery.inArray( this.value, values ) >= 0 || + jQuery.inArray( this.text, values ) >= 0); + }); - } else - this.value = value; - }); + if ( !values.length ) + this.selectedIndex = -1; + + } else + this.value = value; + }); }, html: function( value ) { @@ -966,9 +972,9 @@ jQuery.extend({ div.childNodes : []; - for ( var i = tbody.length - 1; i >= 0 ; --i ) - if ( jQuery.nodeName( tbody[ i ], "tbody" ) && !tbody[ i ].childNodes.length ) - tbody[ i ].parentNode.removeChild( tbody[ i ] ); + for ( var j = tbody.length - 1; j >= 0 ; --j ) + if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) + tbody[ j ].parentNode.removeChild( tbody[ j ] ); // IE completely kills leading whitespace when innerHTML is used if ( /^\s/.test( elem ) ) @@ -1092,13 +1098,6 @@ jQuery.extend({ 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