diff --git a/src/attributes.js b/src/attributes.js index 82a4de1bd..b22acba03 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -74,7 +74,7 @@ jQuery.fn.extend({ for ( var c = 0, cl = classNames.length; c < cl; c++ ) { className = className.replace(" " + classNames[c] + " ", " "); } - elem.className = className.substring(1, className.length - 1); + elem.className = jQuery.trim( className ); } else { elem.className = ""; diff --git a/test/unit/attributes.js b/test/unit/attributes.js index fd5b203df..70ae50dbd 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -478,7 +478,7 @@ test("addClass(Function) with incoming value", function() { }); var testRemoveClass = function(valueObj) { - expect(5); + expect(7); var $divs = jQuery('div'); @@ -508,6 +508,17 @@ var testRemoveClass = function(valueObj) { var j = jQuery("#nonnodes").contents(); j.removeClass( valueObj("asdf") ); ok( !j.hasClass("asdf"), "Check node,textnode,comment for removeClass" ); + + var div = document.createElement("div"); + div.className = " test foo "; + + jQuery(div).removeClass( valueObj("foo") ); + equals( div.className, "test", "Make sure remaining className is trimmed." ); + + div.className = " test "; + + jQuery(div).removeClass( valueObj("test") ); + equals( div.className, "", "Make sure there is nothing left after everything is removed." ); }; test("removeClass(String) - simple", function() {