No need to run trim on every class iteration in addClass, thanks for the heads-up...
authorjeresig <jeresig@gmail.com>
Sat, 13 Feb 2010 19:30:27 +0000 (14:30 -0500)
committerjeresig <jeresig@gmail.com>
Sat, 13 Feb 2010 19:30:27 +0000 (14:30 -0500)
src/attributes.js
test/unit/attributes.js

index 3e4c5f2..4f7055a 100644 (file)
@@ -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 );
                                        }
                                }
                        }
index c5700ad..d7abbad 100644 (file)
@@ -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() {