]> source.dussan.org Git - jquery.git/commitdiff
Add tests data- and aria- attributes and the autofocus boolean attribute and some...
authortimmywil <tim.willison@thisismedium.com>
Sat, 23 Apr 2011 21:07:31 +0000 (17:07 -0400)
committertimmywil <tim.willison@thisismedium.com>
Mon, 25 Apr 2011 16:41:12 +0000 (12:41 -0400)
src/attributes.js
test/unit/attributes.js

index 5d8a7adb8b75c5c94de88c1faaf4523511ce96cd..43d72ae9b9498af920cd1fe5b7a6695aec3a0cfc 100644 (file)
@@ -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,7 +312,7 @@ 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;
 
@@ -320,9 +320,12 @@ jQuery.extend({
                                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;
                        }
index 0889bf339ef66ade60e37a0d33f61506e013a57a..cfe676a63465ee298dcc9aa08ac61834176f8054 100644 (file)
@@ -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");