X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fattributes.js;h=8d889fc97ece1e8e8ba9dbfcb23874ec4c359e09;hb=da51cd0e43d6d61e0d3d6c197cef1e658bad29bc;hp=4405b431e5cecc26d8971841b5da542160b602eb;hpb=4e9fed3b16ed9612ed373d14a89294e98054f4dd;p=jquery.git diff --git a/src/attributes.js b/src/attributes.js index 4405b43..8d889fc 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -4,6 +4,12 @@ jQuery.fn.extend({ }, addClass: function( value ) { + if(jQuery.isFunction(value)) { + return this.each(function() { + jQuery(this).addClass( value.call(this) ); + }); + } + if ( value && typeof value === "string" ) { var classNames = (value || "").split(/\s+/); @@ -29,6 +35,12 @@ jQuery.fn.extend({ }, removeClass: function( value ) { + if(jQuery.isFunction(value)) { + return this.each(function() { + jQuery(this).removeClass( value.call(this) ); + }); + } + if ( (value && typeof value === "string") || value === undefined ) { var classNames = (value || "").split(/\s+/); @@ -113,7 +125,7 @@ jQuery.fn.extend({ // Typecast once if the value is a number if ( typeof value === "number" ) { value += ''; - } + } var val = value; return this.each(function(){ @@ -122,10 +134,10 @@ jQuery.fn.extend({ // Typecast each time if the value is a Function and the appended // value is therefore different each time. if( typeof val === "number" ) { - val += ''; + val += ''; } } - + if ( this.nodeType != 1 ) { return; } @@ -158,6 +170,13 @@ jQuery.each({ }, toggleClass: function( classNames, state ) { + if( jQuery.isFunction(classNames) ) { + return this.each(function() { + console.log(this); + jQuery(this).toggleClass( classNames.call(this), state ); + }); + } + var type = typeof classNames; if ( type === "string" ) { // toggle individual class names @@ -178,7 +197,11 @@ jQuery.each({ } } }, function(name, fn){ - jQuery.fn[ name ] = function(){ + jQuery.fn[ name ] = function(val, state){ + if( jQuery.isFunction( val ) ) { + return this.each(function() { jQuery(this)[ name ]( val.call(this), state ); }); + } + return this.each( fn, arguments ); }; }); @@ -192,7 +215,7 @@ jQuery.extend({ if ( name in jQuery.fn && name !== "attr" ) { return jQuery(elem)[name](value); } - + var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ), // Whether we are setting (or getting) set = value !== undefined;