]> source.dussan.org Git - jquery.git/commitdiff
Landing pull request 600. Remove jQuery.trim() to restore perf. Supplements #10773.
authorRick Waldron <waldron.rick@gmail.com>
Mon, 14 Nov 2011 17:24:58 +0000 (12:24 -0500)
committertimmywil <timmywillisn@gmail.com>
Mon, 14 Nov 2011 17:24:58 +0000 (12:24 -0500)
More Details:
 - https://github.com/jquery/jquery/pull/600
 - http://bugs.jquery.com/ticket/10773

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

index 08bec584718f0182af3502375282d53da9d6a7ef..193abf00704c270ffdf559c7f6511c5f39dc2ca6 100644 (file)
@@ -355,21 +355,24 @@ jQuery.extend({
                var propName, attrNames, name, l,
                        i = 0;
 
-               if ( value && typeof value === "string" && elem.nodeType === 1 ) {
-                       attrNames = jQuery.trim( value ).toLowerCase().split( " " );
+               if ( value && elem.nodeType === 1 ) {
+                       attrNames = value.toLowerCase().split( rspace );
                        l = attrNames.length;
 
                        for ( ; i < l; i++ ) {
                                name = attrNames[ i ];
-                               propName = jQuery.propFix[ name ] || name;
 
-                               // See #9699 for explanation of this approach (setting first, then removal)
-                               jQuery.attr( elem, name, "" );
-                               elem.removeAttribute( getSetAttribute ? name : propName );
+                               if ( name ) {
+                                       propName = jQuery.propFix[ name ] || name;
 
-                               // Set corresponding property to false for boolean attributes
-                               if ( rboolean.test( name ) && propName in elem ) {
-                                       elem[ propName ] = false;
+                                       // See #9699 for explanation of this approach (setting first, then removal)
+                                       jQuery.attr( elem, name, "" );
+                                       elem.removeAttribute( getSetAttribute ? name : propName );
+
+                                       // Set corresponding property to false for boolean attributes
+                                       if ( rboolean.test( name ) && propName in elem ) {
+                                               elem[ propName ] = false;
+                                       }
                                }
                        }
                }
index ac3de94bd874efb71130447daebc3404a1f4f93b..0bdea7f966934553e1de798c8530f6b3952c33ae 100644 (file)
@@ -481,20 +481,7 @@ test("removeAttr(String)", function() {
        }
 });
 
-test("removeAttr, #", function() {
-
-       var div = jQuery("<div />");
-
-       ok( div.removeAttr( "" ), "empty string" );
-       ok( div.removeAttr(), "nothing" );
-       ok( div.removeAttr( false ), "false" );
-       ok( div.removeAttr( true ), "true" );
-       ok( div.removeAttr({ }), "object" );
-       ok( div.removeAttr( function(){} ), "function" );
-
-});
-
-test("removeAttr(Multi String)", function() {
+test("removeAttr(Multi String, variable space width)", function() {
        expect(8);
 
        var div = jQuery("<div id='a' alt='b' title='c' rel='d'></div>"),
@@ -509,7 +496,7 @@ test("removeAttr(Multi String)", function() {
                equal( div.attr(key), val, "Attribute `" + key + "` exists, and has a value of `" + val + "`" );
        });
 
-       div.removeAttr( "id alt title rel " );
+       div.removeAttr( "id   alt title  rel  " );
 
        jQuery.each( tests, function( key, val ) {
                equal( div.attr(key), undefined, "Attribute `" + key + "` was removed" );