Make sure that jQuery.data( elem ) always returns a data object, fixes #5971. Improve...
[jquery.git] / src / attributes.js
index 1dd7084..82a4de1 100644 (file)
@@ -12,14 +12,7 @@ jQuery.fn.extend({
                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 ) {
@@ -99,7 +92,7 @@ jQuery.fn.extend({
                if ( jQuery.isFunction( value ) ) {
                        return this.each(function(i) {
                                var self = jQuery(this);
-                               self.toggleClass( value.call(this, i, self.attr("class")), stateVal );
+                               self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
                        });
                }
 
@@ -288,7 +281,7 @@ jQuery.extend({
                                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;