diff options
author | Yehuda Katz <wycats@Yehuda-Katz.local> | 2009-12-09 20:57:19 -0800 |
---|---|---|
committer | Yehuda Katz <wycats@Yehuda-Katz.local> | 2009-12-09 20:57:53 -0800 |
commit | da51cd0e43d6d61e0d3d6c197cef1e658bad29bc (patch) | |
tree | 27ff43492b64daec269d3d715990af4ff69b6d1a /src | |
parent | 4e9fed3b16ed9612ed373d14a89294e98054f4dd (diff) | |
download | jquery-da51cd0e43d6d61e0d3d6c197cef1e658bad29bc.tar.gz jquery-da51cd0e43d6d61e0d3d6c197cef1e658bad29bc.zip |
Add function values to addClass, removeClass, toggleClass, text, and removeAttr
Diffstat (limited to 'src')
-rw-r--r-- | src/attributes.js | 33 | ||||
-rw-r--r-- | src/manipulation.js | 8 |
2 files changed, 35 insertions, 6 deletions
diff --git a/src/attributes.js b/src/attributes.js index 4405b431e..8d889fc97 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; diff --git a/src/manipulation.js b/src/manipulation.js index 930b3d9b9..baab8c6c0 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -32,6 +32,12 @@ if ( !jQuery.support.htmlSerialize ) { jQuery.fn.extend({ text: function( text ) { + if(jQuery.isFunction(text)) { + return this.each(function() { + return jQuery(this).text( text.call(this) ); + }); + } + if ( typeof text !== "object" && text !== undefined ) { return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); } @@ -87,7 +93,7 @@ jQuery.fn.extend({ } }).end(); }, - + append: function() { return this.domManip(arguments, true, function(elem){ if ( this.nodeType === 1 ) { |