diff options
-rw-r--r-- | src/attributes.js | 7 | ||||
-rw-r--r-- | test/unit/attributes.js | 13 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/attributes.js b/src/attributes.js index df7ed028e..4ec364cb7 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -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++ ) { diff --git a/test/unit/attributes.js b/test/unit/attributes.js index dd21b6539..9fc6ac61f 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -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" ); +}); |