return access( this, name, value, true, jQuery.attr );
},
- removeAttr: function( name ) {
- if ( jQuery.isFunction( name ) ) {
- return this.each(function(i) {
- var self = jQuery(this);
- self.removeAttr( name.call(this, i, self.attr(name)) );
- });
- }
-
+ removeAttr: function( name, fn ) {
return this.each(function(){
jQuery.attr( this, name, "" );
if ( this.nodeType === 1 ) {
elem.className = value;
} else {
- var className = " " + elem.className + " ";
+ var className = " " + elem.className + " ", setClass = elem.className;
for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
- elem.className += " " + classNames[c];
+ setClass += " " + classNames[c];
}
}
+ elem.className = jQuery.trim( setClass );
}
}
}
for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
className = className.replace(" " + classNames[c] + " ", " ");
}
- elem.className = className.substring(1, className.length - 1);
+ elem.className = jQuery.trim( className );
} else {
elem.className = "";
return this;
},
- toggleClass: function( classNames, state ) {
- var type = typeof classNames;
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value, isBool = typeof stateVal === "boolean";
- if ( jQuery.isFunction( classNames ) ) {
+ if ( jQuery.isFunction( value ) ) {
return this.each(function(i) {
var self = jQuery(this);
- self.toggleClass( classNames.call(this, i, self.attr("class")), state );
+ self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
});
}
- return this.each(function(){
+ return this.each(function() {
if ( type === "string" ) {
// toggle individual class names
- var isBool = typeof state === "boolean", className, i = 0,
- classNames = classNames.split( rspace );
+ var className, i = 0, self = jQuery(this),
+ state = stateVal,
+ classNames = value.split( rspace );
while ( (className = classNames[ i++ ]) ) {
// check each className given, space seperated list
- state = isBool ? state : !jQuery(this).hasClass( className );
- jQuery(this)[ state ? "addClass" : "removeClass" ]( className );
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
}
} else if ( type === "undefined" || type === "boolean" ) {
}
// toggle whole className
- this.className = this.className || classNames === false ? "" : jQuery.data( this, "__className__" ) || "";
+ this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
}
});
},
return undefined;
}
- // Typecast once if the value is a number
- if ( typeof value === "number" ) {
- value += "";
- }
-
- var val = value;
+ var isFunction = jQuery.isFunction(value);
return this.each(function(i) {
- var self = jQuery(this);
+ var self = jQuery(this), val = value;
- if ( jQuery.isFunction(value) ) {
- val = value.call(this, i, self.val());
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
- // Typecast each time if the value is a Function and the appended
- // value is therefore different each time.
- if ( typeof val === "number" ) {
- val += "";
- }
+ if ( isFunction ) {
+ val = value.call(this, i, self.val());
}
- if ( this.nodeType !== 1 ) {
- return;
+ // Typecast each time if the value is a Function and the appended
+ // value is therefore different each time.
+ if ( typeof val === "number" ) {
+ val += "";
}
if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
var values = jQuery.makeArray(val);
jQuery( "option", this ).each(function() {
- this.selected = jQuery.inArray( self.val(), values ) >= 0;
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
});
if ( !values.length ) {
if ( set ) {
// We can't allow the type property to be changed (since it causes problems in IE)
if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
- throw "type property can't be changed";
+ jQuery.error( "type property can't be changed" );
}
elem[ name ] = value;
}
// elem is actually elem.style ... set the style
- // Using attr for specific style information is now deprecated. Use style insead.
+ // Using attr for specific style information is now deprecated. Use style instead.
return jQuery.style( elem, name, value );
}
});