diff --git a/src/attributes/attr.js b/src/attributes/attr.js index f5c8dd598..716f4fe25 100644 --- a/src/attributes/attr.js +++ b/src/attributes/attr.js @@ -31,7 +31,7 @@ jQuery.extend({ // don't get/set attributes on text, comment and attribute nodes if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; + return null; } // Fallback to prop when attributes are not supported diff --git a/test/unit/attributes.js b/test/unit/attributes.js index 8f3207e90..ebe171bd9 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -377,8 +377,17 @@ test( "attr(String, Object)", function() { jQuery.each( [ window, document, obj, "#firstp" ], function( i, elem ) { var oldVal = elem.nonexisting, $elem = jQuery( elem ); - strictEqual( $elem.attr("nonexisting"), null, "attr works correctly for non existing attributes (bug #7500)." ); - equal( $elem.attr( "nonexisting", "foo" ).attr("nonexisting"), "foo", "attr falls back to prop on unsupported arguments" ); + // Falls back to prop, which returns undefined + strictEqual( + $elem.attr( "nonexisting" ), + typeof $elem[0].getAttribute === "undefined" ? undefined : null, + "attr works correctly for non existing attributes (bug #7500)." + ); + equal( + $elem.attr( "nonexisting", "foo" ).attr( "nonexisting" ), + "foo", + "attr falls back to prop on unsupported arguments" + ); elem.nonexisting = oldVal; });