]> source.dussan.org Git - jquery.git/commitdiff
Fix #12411, .removeClass(undefined) is a chaining no-op. Close gh-913.
authorMatthias Jäggli <matthias.jaeggli@scout24.ch>
Tue, 28 Aug 2012 13:26:06 +0000 (16:26 +0300)
committerDave Methvin <dave.methvin@gmail.com>
Mon, 22 Oct 2012 01:06:41 +0000 (21:06 -0400)
.removeClass() //removes all classes, as documented
.removeClass(window.nonExistentVariable) // removes nothing

src/attributes.js
test/unit/attributes.js

index 68e763e09beb93b74b367cea7de5a1d60374e417..00e21af35781340b0627847e95bbe32078da9cf8 100644 (file)
@@ -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++ ) {
index 9ead9a9b9457e7e49d57321d5e97a08fe322cab3..0e51ee1376a30181234453d0b2811af7c2414b34 100644 (file)
@@ -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 );