From ba90af0dc5b279d785e49ff5c051073d2178d372 Mon Sep 17 00:00:00 2001 From: timmywil Date: Wed, 18 May 2011 11:29:25 -0400 Subject: [PATCH] Make the value hook less obtrusive for elements which do not inherently have a value property. Fixes #9328. --- src/attributes.js | 4 +++- test/unit/attributes.js | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/attributes.js b/src/attributes.js index 6353e636..bb2c2f7d 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -498,7 +498,9 @@ jQuery.attrHooks.value = { if ( formHook && jQuery.nodeName( elem, "button" ) ) { return formHook.get( elem, name ); } - return elem.value; + return name in elem ? + elem.value : + elem.getAttribute( name ); }, set: function( elem, value, name ) { if ( formHook && jQuery.nodeName( elem, "button" ) ) { diff --git a/test/unit/attributes.js b/test/unit/attributes.js index 549efcab..546aaffa 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -40,7 +40,7 @@ test("jQuery.attrFix/jQuery.propFix integrity test", function() { }); test("attr(String)", function() { - expect(42); + expect(43); equals( jQuery("#text1").attr("type"), "text", "Check for type attribute" ); equals( jQuery("#radio1").attr("type"), "radio", "Check for type attribute" ); @@ -54,6 +54,7 @@ test("attr(String)", function() { equals( jQuery("#text1").attr("name"), "action", "Check for name attribute" ); ok( jQuery("#form").attr("action").indexOf("formaction") >= 0, "Check for action attribute" ); equals( jQuery("#text1").attr("value", "t").attr("value"), "t", "Check setting the value attribute" ); + equals( jQuery("
").attr("value"), "t", "Check setting custom attr named 'value' on a div" ); equals( jQuery("#form").attr("blah", "blah").attr("blah"), "blah", "Set non-existant attribute on a form" ); equals( jQuery("#foo").attr("height"), undefined, "Non existent height attribute should return undefined" );