diff --git a/src/attributes.js b/src/attributes.js index 3e4c5f2162..4f7055a6e4 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -40,12 +40,13 @@ jQuery.fn.extend({ elem.className = value; } else { - var className = " " + elem.className + " "; + var className = " " + elem.className + " ", setClass = elem.className; for ( var c = 0, cl = classNames.length; c < cl; c++ ) { if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) { - elem.className = jQuery.trim( elem.className + " " + classNames[c] ); + setClass += " " + classNames[c]; } } + elem.className = jQuery.trim( setClass ); } } } diff --git a/test/unit/attributes.js b/test/unit/attributes.js index c5700adda9..d7abbad359 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -438,7 +438,7 @@ test("val(Function) with incoming value", function() { }); var testAddClass = function(valueObj) { - expect(4); + expect(5); var div = jQuery("div"); div.addClass( valueObj("test") ); var pass = true; @@ -460,6 +460,10 @@ var testAddClass = function(valueObj) { div.attr("class", " foo"); div.addClass( valueObj("test") ); equals( div.attr("class"), "foo test", "Make sure there's no extra whitespace." ); + + div.attr("class", "foo"); + div.addClass( valueObj("bar baz") ); + equals( div.attr("class"), "foo bar baz", "Make sure there isn't too much trimming." ); }; test("addClass(String)", function() {