aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYehuda Katz <wycats@Yehuda-Katz.local>2009-12-09 20:57:19 -0800
committerYehuda Katz <wycats@Yehuda-Katz.local>2009-12-09 20:57:53 -0800
commitda51cd0e43d6d61e0d3d6c197cef1e658bad29bc (patch)
tree27ff43492b64daec269d3d715990af4ff69b6d1a /src
parent4e9fed3b16ed9612ed373d14a89294e98054f4dd (diff)
downloadjquery-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.js33
-rw-r--r--src/manipulation.js8
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 ) {