Skip to content
Permalink
Browse files

Attribute hooks do not need to be attached in XML docs. Fixes #9568.

  • Loading branch information...
timmywil
timmywil committed Jun 13, 2011
1 parent 39a2f29 commit 641ad802111d2dc16ccf4b3721784a6addaf20df
Showing with 22 additions and 18 deletions.
  1. +17 −14 src/attributes.js
  2. +1 −1 test/data/dashboard.xml
  3. +4 −3 test/unit/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 ) {
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<dashboard>
<locations class="foo">
<location for="bar">
<location for="bar" checked="different">
<infowindowtab>
<tab title="Location"><![CDATA[blabla]]></tab>
<tab title="Users"><![CDATA[blublu]]></tab>
@@ -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();
});
});

0 comments on commit 641ad80

Please sign in to comment.
You can’t perform that action at this time.