aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2009-01-07 14:36:30 +0000
committerScott González <scott.gonzalez@gmail.com>2009-01-07 14:36:30 +0000
commit49d0d5b7a3628947a14028d14ed042746cc6c3e4 (patch)
treeb30d600ebc5a07b6555e7f1d4bcbcb627cd31a2e
parentf9e0b1ed7a5f252bb58aba9bdfb96653af2b4c1b (diff)
downloadjquery-49d0d5b7a3628947a14028d14ed042746cc6c3e4.tar.gz
jquery-49d0d5b7a3628947a14028d14ed042746cc6c3e4.zip
Fixed tabindex normalization so that elements that natively support tabbing, but don't have a tabindex explicitly set return 0 instead of undefined.
Removed jQuery.support.tabindex since we're only normalizing non-XML right now and all browsers support tabIndex for HTML documents.
-rw-r--r--src/core.js12
-rw-r--r--src/support.js6
-rw-r--r--test/unit/core.js16
3 files changed, 17 insertions, 17 deletions
diff --git a/src/core.js b/src/core.js
index c4c386717..61a9bd9f6 100644
--- a/src/core.js
+++ b/src/core.js
@@ -968,11 +968,15 @@ jQuery.extend({
if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
return elem.getAttributeNode( name ).nodeValue;
- // elem.tabindex doesn't always return the correct value
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- if ( name == jQuery.props.tabindex ) {
- var attributeNode = elem.getAttributeNode(jQuery.props.tabindex);
- return attributeNode && attributeNode.specified && attributeNode.value || undefined;
+ if ( name == "tabIndex" ) {
+ var attributeNode = elem.getAttributeNode( "tabIndex" );
+ return attributeNode && attributeNode.specified
+ ? attributeNode.value
+ : elem.nodeName.match(/^(a|area|button|input|object|select|textarea)$/i)
+ ? 0
+ : undefined;
}
return elem[ name ];
diff --git a/src/support.js b/src/support.js
index c334e78d6..bacc5bd4e 100644
--- a/src/support.js
+++ b/src/support.js
@@ -51,10 +51,6 @@
// (IE uses styleFloat instead of cssFloat)
cssFloat: !!a.style.cssFloat,
- // Verify tabindex attribute existence
- // (IE uses tabIndex instead of tabindex)
- tabindex: !a.getAttributeNode('tabindex'),
-
// Will be defined later
scriptEval: false,
noCloneEvent: true
@@ -101,5 +97,5 @@ jQuery.props = {
maxlength: "maxLength",
cellspacing: "cellSpacing",
rowspan: "rowSpan",
- tabindex: jQuery.support.tabindex ? "tabindex" : "tabIndex"
+ tabindex: "tabIndex"
};
diff --git a/test/unit/core.js b/test/unit/core.js
index e1c373301..ee5f805ec 100644
--- a/test/unit/core.js
+++ b/test/unit/core.js
@@ -562,7 +562,7 @@ test("attr('tabindex')", function() {
equals(jQuery('#divWithNoTabIndex').attr('tabindex'), undefined, 'no tabindex, not tabbable by default');
// link without a tabindex
- equals(jQuery('#linkWithNoTabIndex').attr('tabindex'), undefined, 'no tabindex, tabbable by default');
+ equals(jQuery('#linkWithNoTabIndex').attr('tabindex'), 0, 'no tabindex, tabbable by default');
});
test("attr('tabindex', value)", function() {
@@ -1560,7 +1560,7 @@ test("removeClass(String) - simple", function() {
});
test("toggleClass(String)", function() {
- expect(6);
+ expect(6);
var e = jQuery("#firstp");
ok( !e.is(".test"), "Assert class not present" );
e.toggleClass("test");
@@ -1568,12 +1568,12 @@ test("toggleClass(String)", function() {
e.toggleClass("test");
ok( !e.is(".test"), "Assert class not present" );
- e.toggleClass("test", false);
- ok( !e.is(".test"), "Assert class not present" );
- e.toggleClass("test", true);
- ok( e.is(".test"), "Assert class present" );
- e.toggleClass("test", false);
- ok( !e.is(".test"), "Assert class not present" );
+ e.toggleClass("test", false);
+ ok( !e.is(".test"), "Assert class not present" );
+ e.toggleClass("test", true);
+ ok( e.is(".test"), "Assert class present" );
+ e.toggleClass("test", false);
+ ok( !e.is(".test"), "Assert class not present" );
});
test("removeAttr(String", function() {