]> source.dussan.org Git - jquery.git/commitdiff
Handle unset value attributes consistently depending on property existence. Supplemen...
authortimmywil <tim.willison@thisismedium.com>
Wed, 18 May 2011 15:46:22 +0000 (11:46 -0400)
committertimmywil <tim.willison@thisismedium.com>
Wed, 18 May 2011 15:46:22 +0000 (11:46 -0400)
src/attributes.js
test/unit/attributes.js

index bb2c2f7d8b79ac5ca9ca9f091be960a925f0cd6b..ba820145a4c22b9d83172a3abe960d59dc5fc1b2 100644 (file)
@@ -343,8 +343,8 @@ jQuery.extend({
                                return value;
                        }
 
-               } else if ( hooks && "get" in hooks && notxml ) {
-                       return hooks.get( elem, name );
+               } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
+                       return ret;
 
                } else {
 
@@ -495,12 +495,13 @@ boolHook = {
 // Use the formHook for button elements in IE6/7 (#1954)
 jQuery.attrHooks.value = {
        get: function( elem, name ) {
+               var ret;
                if ( formHook && jQuery.nodeName( elem, "button" ) ) {
                        return formHook.get( elem, name );
                }
                return name in elem ?
                        elem.value :
-                       elem.getAttribute( name );
+                       null;
        },
        set: function( elem, value, name ) {
                if ( formHook && jQuery.nodeName( elem, "button" ) ) {
index 546aaffa5e6ab3f04c6a6da4d777e9d9932cbd43..c4ed7d30fccb543e489f162434e7b9dce6c36985 100644 (file)
@@ -40,7 +40,7 @@ test("jQuery.attrFix/jQuery.propFix integrity test", function() {
 });
 
 test("attr(String)", function() {
-       expect(43);
+       expect(45);
 
        equals( jQuery("#text1").attr("type"), "text", "Check for type attribute" );
        equals( jQuery("#radio1").attr("type"), "radio", "Check for type attribute" );
@@ -126,6 +126,8 @@ test("attr(String)", function() {
        ok( jQuery("<div/>").attr("title") === undefined, "Make sure undefined is returned when no attribute is found." );
        equal( jQuery("<div/>").attr("title", "something").attr("title"), "something", "Set the title attribute." );
        ok( jQuery().attr("doesntexist") === undefined, "Make sure undefined is returned when no element is there." );
+       equal( jQuery("<div/>").attr("value"), undefined, "An unset value on a div returns undefined." );
+       equal( jQuery("<input/>").attr("value"), "", "An unset value on an input returns current value." );
 });
 
 if ( !isLocal ) {