r941 - in trunk: tests ui

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));
    };
}