From: Rick Waldron Date: Tue, 20 Sep 2011 01:07:07 +0000 (-0400) Subject: Landing pull request 492. 1.7 Remove multiple attributes (Symmetry with removeClass... X-Git-Tag: 1.7b1~29 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=ca4133cc3fb4202d08de0d9e9d05e2442be63653;p=jquery.git Landing pull request 492. 1.7 Remove multiple attributes (Symmetry with removeClass) Combines patches submitted by leeoniya, zertosh and my own tests. Fixes #5479. More Details: - https://github.com/jquery/jquery/pull/492 - http://bugs.jquery.com/ticket/5479 --- diff --git a/src/attributes.js b/src/attributes.js index 91b53f97e..71353cf78 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -362,18 +362,26 @@ jQuery.extend({ } }, - removeAttr: function( elem, name ) { - var propName; + removeAttr: function( elem, value ) { + var propName, attrNames, name, l, + i = 0; + if ( elem.nodeType === 1 ) { - name = jQuery.attrFix[ name ] || name; + attrNames = (value || "").split( rspace ); + l = attrNames.length; - // See #9699 for explanation of this approach (setting first, then removal) - jQuery.attr( elem, name, "" ); - elem.removeAttribute( name ); + for ( ; i < l; i++ ) { + name = attrNames[ i ]; + name = jQuery.attrFix[ name ] || name; - // Set corresponding property to false for boolean attributes - if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { - elem[ propName ] = false; + // See #9699 for explanation of this approach (setting first, then removal) + jQuery.attr( elem, name, "" ); + elem.removeAttribute( name ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { + elem[ propName ] = false; + } } } }, diff --git a/test/unit/attributes.js b/test/unit/attributes.js index 5945510de..da39933d3 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -532,6 +532,28 @@ test("prop(String, Object)", function() { jQuery( document ).removeProp("nonexisting"); }); +test("removeAttr(Multi String)", function() { + expect(8); + + var div = jQuery("
"), + tests = { + id: "a", + alt: "b", + title: "c", + rel: "d" + }; + + jQuery.each( tests, function( key, val ) { + equal( div.attr(key), val, "Attribute `" + key + "` exists, and has a value of `" + val + "`" ); + }); + + div.removeAttr( "id alt title rel" ); + + jQuery.each( tests, function( key, val ) { + equal( div.attr(key), undefined, "Attribute `" + key + "` was removed" ); + }); +}); + test("prop('tabindex')", function() { expect(8);