]> source.dussan.org Git - jquery.git/commitdiff
Fix #10773. Improve parameter handling in removeAttr.
authorOleg <markelog@gmail.com>
Sun, 13 Nov 2011 08:10:21 +0000 (12:10 +0400)
committerDave Methvin <dave.methvin@gmail.com>
Mon, 14 Nov 2011 16:30:53 +0000 (11:30 -0500)
src/attributes.js
test/unit/attributes.js

index b7c1f4a8259e17c9a2fd2db0c3e1672a9f307932..08bec584718f0182af3502375282d53da9d6a7ef 100644 (file)
@@ -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)
index f8305a28fd6396a4f571718c3e657825c2c27d26..ac3de94bd874efb71130447daebc3404a1f4f93b 100644 (file)
@@ -481,6 +481,41 @@ 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() {
+       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(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("<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);