From: timmywil Date: Fri, 6 May 2011 17:49:20 +0000 (-0400) Subject: Check empty string instead of specified as specified is inconsistent on the name... X-Git-Tag: 1.6.1rc1~23 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c72b0f3256672424a193040509ed63c755c805a2;p=jquery.git Check empty string instead of specified as specified is inconsistent on the name attribute. Fixes #9148. --- diff --git a/src/attributes.js b/src/attributes.js index c22e89b71..86f2d74a7 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 257d02d09..e01982364 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" );