From: Oleg Date: Sun, 13 Nov 2011 08:10:21 +0000 (+0400) Subject: Fix #10773. Improve parameter handling in removeAttr. X-Git-Tag: 1.7.1rc1~14 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=a467aa0a779b8741581cc2ab1fcd914f5718f5c8;p=jquery.git Fix #10773. Improve parameter handling in removeAttr. --- diff --git a/src/attributes.js b/src/attributes.js index b7c1f4a82..08bec5847 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -355,12 +355,12 @@ jQuery.extend({ var propName, attrNames, name, l, i = 0; - if ( elem.nodeType === 1 ) { - attrNames = ( value || "" ).split( rspace ); + if ( value && typeof value === "string" && elem.nodeType === 1 ) { + attrNames = jQuery.trim( value ).toLowerCase().split( " " ); l = attrNames.length; for ( ; i < l; i++ ) { - name = attrNames[ i ].toLowerCase(); + name = attrNames[ i ]; propName = jQuery.propFix[ name ] || name; // See #9699 for explanation of this approach (setting first, then removal) diff --git a/test/unit/attributes.js b/test/unit/attributes.js index f8305a28f..ac3de94bd 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -481,6 +481,41 @@ 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() { + 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(String, Object)", function() { expect(31); @@ -548,28 +583,6 @@ test("prop(String, Object)", function() { equal( $form.prop("enctype"), "multipart/form-data", "Set the enctype of a form (encoding in IE6/7 #6743)" ); }); -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);