Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Landing pull request 492. 1.7 Remove multiple attributes (Symmetry wi…
…th removeClass) Combines patches submitted by leeoniya, zertosh and my own tests. Fixes #5479.

More Details:
 - #492
 - http://bugs.jquery.com/ticket/5479
  • Loading branch information
rwaldron authored and timmywil committed Sep 20, 2011
1 parent f602136 commit ca4133c
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 9 deletions.
26 changes: 17 additions & 9 deletions src/attributes.js
Expand Up @@ -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;
}
}
}
},
Expand Down
22 changes: 22 additions & 0 deletions test/unit/attributes.js
Expand Up @@ -532,6 +532,28 @@ test("prop(String, Object)", function() {
jQuery( document ).removeProp("nonexisting");
});

test("removeAttr(Multi String)", function() {
expect(8);

var div = jQuery("<div id='a' alt='b' title='c' rel='d'></div>"),
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);

Expand Down

0 comments on commit ca4133c

Please sign in to comment.