diff options
author | Scott González <scott.gonzalez@gmail.com> | 2008-11-15 04:29:08 +0000 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2008-11-15 04:29:08 +0000 |
commit | 6fb3ffad36e9ac318a186d471d60459d6b16094c (patch) | |
tree | 6bd7caa798c000272ff479866e4b5bda30d8ef81 | |
parent | 0808041ad9e21a422b8f6fbd235c5631e0cf4309 (diff) | |
download | jquery-ui-6fb3ffad36e9ac318a186d471d60459d6b16094c.tar.gz jquery-ui-6fb3ffad36e9ac318a186d471d60459d6b16094c.zip |
Core: Fixed #3562: Modify .removeAttr() to work on ARIA properties in FF2.
-rw-r--r-- | tests/core.js | 21 | ||||
-rw-r--r-- | ui/ui.core.js | 12 |
2 files changed, 26 insertions, 7 deletions
diff --git a/tests/core.js b/tests/core.js index 6c701de41..0836fb588 100644 --- a/tests/core.js +++ b/tests/core.js @@ -56,12 +56,23 @@ test("tabbable - tabindex", function() { module('jQuery extensions'); test("attr - aria", function() { - expect(4); + expect(6); + + var el = $('#aria'); + + ok(!el.attr('role'), 'role is empty via attr'); + equals(el.attr('role', 'tablist').attr('role'), 'tablist', 'role is tablist'); + + equals(el.attr('aria-expanded'), undefined, 'aria expanded is undefined'); + + el.attr('aria-expanded', true); + equals(el.attr('aria-expanded'), 'true', 'aria expanded is true'); + + el.removeAttr('aria-expanded'); + equals(el.attr('aria-expanded'), undefined, 'aria expanded is undefined after removing'); - ok(!$('#aria').attr('role'), 'role is empty via attr'); - equals($('#aria').attr('role', 'tablist').attr('role'), 'tablist', 'role is tablist'); - equals($('#aria').attr('aria-expanded', true).attr('aria-expanded'), 'true', 'aria expanded is true'); - equals($('#aria').attr('aria-expanded', false).attr('aria-expanded'), 'false', 'aria expanded is false'); + el.attr('aria-expanded', false); + equals(el.attr('aria-expanded'), 'false', 'aria expanded is false'); }); })(jQuery); diff --git a/ui/ui.core.js b/ui/ui.core.js index 3b6beb329..7601588b3 100644 --- a/ui/ui.core.js +++ b/ui/ui.core.js @@ -135,9 +135,10 @@ $.ui = { }; // WAI-ARIA normalization -// tweak $.attr for FF2 implementation if (isFF2) { var attr = $.attr, + removeAttr = $.fn.removeAttr, + ariaNS = "http://www.w3.org/2005/07/aaa", ariaState = /^aria-/, ariaRole = /^wairole:/; @@ -150,11 +151,18 @@ if (isFF2) { : (attr.apply(this, arguments) || "").replace(ariaRole, "")) : (ariaState.test(name) ? (set - ? elem.setAttributeNS("http://www.w3.org/2005/07/aaa", + ? elem.setAttributeNS(ariaNS, name.replace(ariaState, "aaa:"), value) : attr.call(this, elem, name.replace(ariaState, "aaa:"))) : attr.apply(this, arguments))); }; + + $.fn.removeAttr = function(name) { + return (ariaState.test(name) + ? this.each(function() { + this.removeAttributeNS(ariaNS, name.replace(ariaState, "")); + }) : removeAttr.call(this, name)); + }; } //jQuery plugins |