r941 - in trunk: tests ui
Author: scott.gonzalez
Date: Fri Nov 14 20:29:08 2008
New Revision: 941
Modified:
trunk/tests/core.js
trunk/ui/ui.core.js
Log:
Core: Fixed #3562: Modify .removeAttr() to work on ARIA properties in FF2.
Modified: trunk/tests/core.js
==============================================================================
--- trunk/tests/core.js (original)
+++ trunk/tests/core.js Fri Nov 14 20:29:08 2008
@@ -56,12 +56,23 @@
module('jQuery extensions');
test("attr - aria", function() {
- expect(4);
+ expect(6);
- 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');
+ 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');
+
+ el.attr('aria-expanded', false);
+ equals(el.attr('aria-expanded'), 'false', 'aria expanded is false');
});
})(jQuery);
Modified: trunk/ui/ui.core.js
==============================================================================
--- trunk/ui/ui.core.js (original)
+++ trunk/ui/ui.core.js Fri Nov 14 20:29:08 2008
@@ -135,9 +135,10 @@
};
// 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,10 +151,17 @@
: (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));
};
}