diff --git a/src/attributes.js b/src/attributes.js index c22e89b7..86f2d74a 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -491,8 +491,8 @@ if ( !jQuery.support.getSetAttribute ) { return elem.getAttribute( name ); } ret = elem.getAttributeNode( name ); - // Return undefined if not specified instead of empty string - return ret && ret.specified ? + // Return undefined if nodeValue is empty string + return ret && ret.nodeValue !== "" ? ret.nodeValue : undefined; }, diff --git a/test/unit/attributes.js b/test/unit/attributes.js index 257d02d0..e0198236 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -144,7 +144,7 @@ test("attr(Hash)", function() { }); test("attr(String, Object)", function() { - expect(57); + expect(58); var div = jQuery("div").attr("foo", "bar"), fail = false; @@ -164,6 +164,8 @@ test("attr(String, Object)", function() { equals( jQuery("#name").attr("name"), "something", "Set name attribute" ); jQuery("#name").attr("name", null); equals( jQuery("#name").attr("name"), undefined, "Remove name attribute" ); + var $input = jQuery("", { name: "something" }); + equals( $input.attr("name"), "something", "Check element creation gets/sets the name attribute." ); jQuery("#check2").prop("checked", true).prop("checked", false).attr("checked", true); equals( document.getElementById("check2").checked, true, "Set checked attribute" );