From a8460d24e0fd9cae3c9091bd9adef645804dc935 Mon Sep 17 00:00:00 2001 From: Rick Waldron Date: Mon, 14 Nov 2011 12:24:58 -0500 Subject: [PATCH] Landing pull request 600. Remove jQuery.trim() to restore perf. Supplements #10773. More Details: - https://github.com/jquery/jquery/pull/600 - http://bugs.jquery.com/ticket/10773 --- src/attributes.js | 21 ++++++++++++--------- test/unit/attributes.js | 17 ++--------------- 2 files changed, 14 insertions(+), 24 deletions(-) diff --git a/src/attributes.js b/src/attributes.js index 08bec5847..193abf007 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -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; + } } } } diff --git a/test/unit/attributes.js b/test/unit/attributes.js index ac3de94bd..0bdea7f96 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -481,20 +481,7 @@ test("removeAttr(String)", function() { } }); -test("removeAttr, #", function() { - - var div = jQuery("
"); - - 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("
"), @@ -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" ); -- 2.39.5