Skip to content
Permalink
Browse files

Add tests data- and aria- attributes and the autofocus boolean attrib…

…ute and some style updates in jQuery.attr
  • Loading branch information...
timmywil
timmywil committed Apr 23, 2011
1 parent 83e9ce9 commit 51650338838e61d4d785968ddb5317233b76f55a
Showing with 17 additions and 6 deletions.
  1. +6 −3 src/attributes.js
  2. +11 −3 test/unit/attributes.js
@@ -6,7 +6,7 @@ var rclass = /[\n\t\r]/g,
rtype = /^(?:button|input)$/i,
rfocusable = /^(?:button|input|object|select|textarea)$/i,
rclickable = /^a(?:rea)?$/i,
special = /^(?:data-|aria-)/,
rspecial = /^(?:data-|aria-)/,
formHook;

jQuery.fn.extend({
@@ -312,17 +312,20 @@ jQuery.extend({

if ( value !== undefined ) {

if ( value === null || (value === false && !special.test( name )) ) {
if ( value === null || (value === false && !rspecial.test( name )) ) {
jQuery.removeAttr( elem, name );
return undefined;

} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
return ret;

} else {
if( value === true && !special.test( name ) ){

// Set boolean attributes to the same name
if ( value === true && !rspecial.test( name ) ) {
value = name;
}

elem.setAttribute( name, "" + value );
return value;
}
@@ -177,7 +177,7 @@ test("attr(Hash)", function() {
});

test("attr(String, Object)", function() {
expect(30);
expect(35);

var div = jQuery("div").attr("foo", "bar"),
fail = false;
@@ -189,7 +189,7 @@ test("attr(String, Object)", function() {
}
}

equals( fail, false, "Set Attribute, the #"+fail+" element didn't get the attribute 'foo'" );
equals( fail, false, "Set Attribute, the #" + fail + " element didn't get the attribute 'foo'" );

// Fails on IE since recent changes to .attr()
// ok( jQuery("#foo").attr({"width": null}), "Try to set an attribute to nothing" );
@@ -213,7 +213,15 @@ test("attr(String, Object)", function() {
var $p = jQuery("#firstp").attr("nonexisting", "foo");
equals( $p.attr("nonexisting"), "foo", "attr(name, value) works correctly for non existing attributes (bug #7500).");
$p.removeAttr("nonexisting");


var $text = jQuery("#text1").attr("autofocus", true);
equals( $text.attr("autofocus"), "autofocus", "Set boolean attributes to the same name");
equals( $text.attr("autofocus", false).attr("autofocus"), undefined, "Setting autofocus attribute to false removes it");
equals( $text.attr("data-something", true).data("something"), true, "Setting data attributes are not affected by boolean settings");
equals( $text.attr("data-another", false).data("another"), false, "Setting data attributes are not affected by boolean settings" );
equals( $text.attr("aria-disabled", false).attr("aria-disabled"), "false", "Setting aria attributes are not affected by boolean settings");
$text.removeData("something").removeData("another").removeAttr("aria-disabled");

var attributeNode = document.createAttribute("irrelevant"),
commentNode = document.createComment("some comment"),
textNode = document.createTextNode("some text");

0 comments on commit 5165033

Please sign in to comment.
You can’t perform that action at this time.