From: Jason Bedard Date: Sat, 11 May 2013 19:34:48 +0000 (-0700) Subject: Avoid jQuery(this) and a closure for .toggle(Boolean), close gh-1271. X-Git-Tag: 1.10.2~13 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9a3683b110fb87c396b320194e0ca1ce3c8069d2;p=jquery.git Avoid jQuery(this) and a closure for .toggle(Boolean), close gh-1271. (cherry picked from commit e53a91909061c7a7280a274990db179b94db81b6) --- diff --git a/src/attributes.js b/src/attributes.js index 4ea1bd5cf..ce2a4f809 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -111,8 +111,11 @@ jQuery.fn.extend({ }, toggleClass: function( value, stateVal ) { - var type = typeof value, - isBool = typeof stateVal === "boolean"; + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } if ( jQuery.isFunction( value ) ) { return this.each(function( i ) { @@ -126,13 +129,15 @@ jQuery.fn.extend({ var className, i = 0, self = jQuery( this ), - state = stateVal, classNames = value.match( core_rnotwhite ) || []; while ( (className = classNames[ i++ ]) ) { // check each className given, space separated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } } // Toggle whole class name diff --git a/src/css.js b/src/css.js index d9bc15fc1..12fc8e6e6 100644 --- a/src/css.js +++ b/src/css.js @@ -134,10 +134,12 @@ jQuery.fn.extend({ return showHide( this ); }, toggle: function( state ) { - var bool = typeof state === "boolean"; + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } return this.each(function() { - if ( bool ? state : isHidden( this ) ) { + if ( isHidden( this ) ) { jQuery( this ).show(); } else { jQuery( this ).hide();