Avoid jQuery(this) and a closure for .toggle(Boolean), close gh-1271.

(cherry picked from commit e53a919090)
This commit is contained in:
Jason Bedard 2013-05-11 12:34:48 -07:00 committed by Dave Methvin
parent adf3090318
commit 9a3683b110
2 changed files with 14 additions and 7 deletions

View File

@ -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

View File

@ -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();