]> source.dussan.org Git - jquery.git/commitdiff
Fix 11547. XML and IE DOM can't be force-lowercase in removeAttr().
authorArne de Bree <arne@bukkie.nl>
Mon, 2 Apr 2012 22:37:02 +0000 (00:37 +0200)
committerDave Methvin <dave.methvin@gmail.com>
Tue, 10 Apr 2012 22:25:04 +0000 (18:25 -0400)
See discussion on pull request: https://github.com/jquery/jquery/pull/724

src/attributes.js
test/unit/attributes.js

index df7ed028e0c18501f47c29cef26d651b28021db4..4ec364cb7d02e4092eba3429675897b555e88bba 100644 (file)
@@ -356,7 +356,12 @@ jQuery.extend({
                        i = 0;
 
                if ( value && elem.nodeType === 1 ) {
-                       attrNames = value.toLowerCase().split( rspace );
+
+                       if ( !jQuery.isXMLDoc( elem ) ) {
+                               value = value.toLowerCase();
+                       }
+
+                       attrNames = value.split( rspace );
                        l = attrNames.length;
 
                        for ( ; i < l; i++ ) {
index dd21b65396981e9e59d0c8464501e30392ba2522..9fc6ac61f33410da8f05f542ace7e572348329d7 100644 (file)
@@ -1192,3 +1192,16 @@ test("coords returns correct values in IE6/IE7, see #10828", function() {
        area = map.html("<area shape='rect' href='#' alt='a' /></map>").find("area");
        equal( area.attr("coords"), undefined, "did not retrieve coords correctly");
 });
+
+test("Handle cased attributes on XML DOM correctly in removeAttr()", function() {
+       expect(1);
+
+       var xmlStr = "<root><item fooBar='123' /></root>",
+               $xmlDoc = jQuery( jQuery.parseXML( xmlStr ) ),
+               $item = $xmlDoc.find( "item" ),
+               el = $item[0];
+
+       $item.removeAttr( "fooBar" );
+
+       equal( el.attributes.length, 0, "attribute with upper case did not get removed" );
+});