aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Jäggli <matthias.jaeggli@scout24.ch>2012-08-28 16:26:06 +0300
committerDave Methvin <dave.methvin@gmail.com>2012-10-21 21:06:41 -0400
commit227c49a4596423a125bdcb1d25a2263e526360db (patch)
tree769820170acef0b190b34e9e4979f9ae610d256c
parent23d125a51acc1cd2d127c9feb684aa96cea7d1fc (diff)
downloadjquery-227c49a4596423a125bdcb1d25a2263e526360db.tar.gz
jquery-227c49a4596423a125bdcb1d25a2263e526360db.zip
Fix #12411, .removeClass(undefined) is a chaining no-op. Close gh-913.
.removeClass() //removes all classes, as documented .removeClass(window.nonExistentVariable) // removes nothing
-rw-r--r--src/attributes.js2
-rw-r--r--test/unit/attributes.js9
2 files changed, 10 insertions, 1 deletions
diff --git a/src/attributes.js b/src/attributes.js
index 68e763e09..00e21af35 100644
--- a/src/attributes.js
+++ b/src/attributes.js
@@ -78,7 +78,7 @@ jQuery.fn.extend({
jQuery( this ).removeClass( value.call(this, j, this.className) );
});
}
- if ( (value && typeof value === "string") || value === undefined ) {
+ if ( (value && typeof value === "string") || !arguments.length ) {
removes = ( value || "" ).split( core_rspace );
for ( i = 0, l = this.length; i < l; i++ ) {
diff --git a/test/unit/attributes.js b/test/unit/attributes.js
index 9ead9a9b9..0e51ee137 100644
--- a/test/unit/attributes.js
+++ b/test/unit/attributes.js
@@ -1202,6 +1202,15 @@ test( "removeClass() removes duplicates", function() {
ok( !$div.hasClass("x"), "Element with multiple same classes does not escape the wrath of removeClass()" );
});
+test("removeClass(undefined) is a no-op", function() {
+ expect( 1 );
+
+ var $div = jQuery("<div class='base second'></div>");
+ $div.removeClass( undefined );
+
+ ok( $div.hasClass("base") && $div.hasClass("second"), "Element still has classes after removeClass(undefined)" );
+});
+
var testToggleClass = function(valueObj) {
expect( 17 );