aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/attributes.js7
-rw-r--r--test/unit/attributes.js13
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" );
+});