From 641ad802111d2dc16ccf4b3721784a6addaf20df Mon Sep 17 00:00:00 2001 From: timmywil Date: Mon, 13 Jun 2011 10:02:13 -0400 Subject: Attribute hooks do not need to be attached in XML docs. Fixes #9568. --- src/attributes.js | 31 +++++++++++++++++-------------- test/data/dashboard.xml | 2 +- test/unit/attributes.js | 7 ++++--- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/attributes.js b/src/attributes.js index 5b68773c9..ce7b35021 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -320,21 +320,23 @@ jQuery.extend({ notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); // Normalize the name if needed - name = notxml && jQuery.attrFix[ name ] || name; + if ( notxml ) { + name = jQuery.attrFix[ name ] || name; - hooks = jQuery.attrHooks[ name ]; + hooks = jQuery.attrHooks[ name ]; - if ( !hooks ) { - // Use boolHook for boolean attributes - if ( rboolean.test( name ) ) { + if ( !hooks ) { + // Use boolHook for boolean attributes + if ( rboolean.test( name ) ) { - hooks = boolHook; + hooks = boolHook; - // Use formHook for forms and if the name contains certain characters - } else if ( formHook && name !== "className" && - (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { + // Use formHook for forms and if the name contains certain characters + } else if ( formHook && name !== "className" && + (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { - hooks = formHook; + hooks = formHook; + } } } @@ -465,10 +467,11 @@ jQuery.extend({ var ret, hooks, notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - // Try to normalize/fix the name - name = notxml && jQuery.propFix[ name ] || name; - - hooks = jQuery.propHooks[ name ]; + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } if ( value !== undefined ) { if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { diff --git a/test/data/dashboard.xml b/test/data/dashboard.xml index 10f6b3347..5a6f56142 100644 --- a/test/data/dashboard.xml +++ b/test/data/dashboard.xml @@ -1,7 +1,7 @@ - + diff --git a/test/unit/attributes.js b/test/unit/attributes.js index 37260f2fa..831f729c3 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -132,11 +132,12 @@ test("attr(String)", function() { if ( !isLocal ) { test("attr(String) in XML Files", function() { - expect(2); + expect(3); stop(); jQuery.get("data/dashboard.xml", function( xml ) { - equals( jQuery( "locations", xml ).attr("class"), "foo", "Check class attribute in XML document" ); - equals( jQuery( "location", xml ).attr("for"), "bar", "Check for attribute in XML document" ); + equal( jQuery( "locations", xml ).attr("class"), "foo", "Check class attribute in XML document" ); + equal( jQuery( "location", xml ).attr("for"), "bar", "Check for attribute in XML document" ); + equal( jQuery( "location", xml ).attr("checked"), "different", "Check that hooks are not attached in XML document" ); start(); }); }); -- cgit v1.2.3