diff --git a/src/attributes.js b/src/attributes.js index 1c81179fe0..3ce66086c2 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -31,13 +31,12 @@ jQuery.fn.extend({ removeClass: function( value ) { if ( (value && typeof value === "string") || value === undefined ) { var classNames = (value || "").split(/\s+/); - for ( var i = 0, l = this.length; i < l; i++ ) { var elem = this[i]; - if ( elem.nodeType === 1 && elem.className ) { if ( value ) { - var className = " " + elem.className + " "; + var className = " " + elem.className + " "; + className = className.replace(/[\n\t]/g, " "); for ( var c = 0, cl = classNames.length; c < cl; c++ ) { className = className.replace(" " + classNames[c] + " ", " "); } @@ -48,7 +47,6 @@ jQuery.fn.extend({ } } } - return this; }, diff --git a/test/unit/attributes.js b/test/unit/attributes.js index 18046a4c9a..492cd07741 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -400,7 +400,7 @@ test("removeAttr(String", function() { }); test("addClass, removeClass, hasClass", function() { - expect(10); + expect(12); var jq = jQuery("

Hi

"), x = jq[0]; @@ -420,11 +420,15 @@ test("addClass, removeClass, hasClass", function() { ok( jq.hasClass("hi"), "Check has1" ); ok( jq.hasClass("bar"), "Check has2" ); - var jq = jQuery("

"); + var jq = jQuery("

"); ok( jq.hasClass("class1"), "Check hasClass with carriage return" ); ok( jq.hasClass("class2"), "Check hasClass with tab" ); ok( jq.hasClass("cla.ss3"), "Check hasClass with dot" ); jq.removeClass("class2"); ok( jq.hasClass("class2")==false, "Check the class has been properly removed" ); + jq.removeClass("cla"); + ok( jq.hasClass("cla.ss3"), "Check the dotted class has not been removed" ); + jq.removeClass("cla.ss3"); + ok( jq.hasClass("cla.ss3")==false, "Check the dotted class has been removed" ); });