aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2009-01-19 21:40:23 +0000
committerJohn Resig <jeresig@gmail.com>2009-01-19 21:40:23 +0000
commit96152559e0e2fa1afc70f8994e664f5805aebad5 (patch)
tree4c4bdea1c17136b53aa7260316a274921435361a
parentd6e541426d10b335fa3b6b481ae591ede977c480 (diff)
downloadjquery-96152559e0e2fa1afc70f8994e664f5805aebad5.tar.gz
jquery-96152559e0e2fa1afc70f8994e664f5805aebad5.zip
Landing a fix for non-link anchor tabIndex (from scott.gonzalez). Fixes ticket #3916.
-rw-r--r--src/core.js6
-rw-r--r--test/index.html5
-rw-r--r--test/unit/core.js29
3 files changed, 22 insertions, 18 deletions
diff --git a/src/core.js b/src/core.js
index a11ceb430..6dc4f00f5 100644
--- a/src/core.js
+++ b/src/core.js
@@ -986,9 +986,11 @@ jQuery.extend({
var attributeNode = elem.getAttributeNode( "tabIndex" );
return attributeNode && attributeNode.specified
? attributeNode.value
- : elem.nodeName.match(/^(a|area|button|input|object|select|textarea)$/i)
+ : elem.nodeName.match(/(button|input|object|select|textarea)/i)
? 0
- : undefined;
+ : elem.nodeName.match(/^(a|area)$/i) && elem.href
+ ? 0
+ : undefined;
}
return elem[ name ];
diff --git a/test/index.html b/test/index.html
index e47a852c8..b5b80dd9b 100644
--- a/test/index.html
+++ b/test/index.html
@@ -198,7 +198,7 @@ Z</textarea>
</div>
<div id="tabindex-tests">
- <ol id="listWithTabIndex" tabindex="0">
+ <ol id="listWithTabIndex" tabindex="5">
<li id="foodWithNegativeTabIndex" tabindex="-1">Rice</li>
<li id="foodNoTabIndex">Beans</li>
<li>Blinis</li>
@@ -209,6 +209,9 @@ Z</textarea>
<span>...</span><a href="#" id="linkWithNoTabIndex">Eat lots of food</a><span>...</span> |
<span>...</span><a href="#" id="linkWithTabIndex" tabindex="2">Eat a little food</a><span>...</span> |
<span>...</span><a href="#" id="linkWithNegativeTabIndex" tabindex="-1">Eat no food</a><span>...</span>
+ <span>...</span><a id="linkWithNoHrefWithNoTabIndex">Eat a burger</a><span>...</span>
+ <span>...</span><a id="linkWithNoHrefWithTabIndex" tabindex="1">Eat some funyuns</a><span>...</span>
+ <span>...</span><a id="linkWithNoHrefWithNegativeTabIndex" tabindex="-1">Eat some funyuns</a><span>...</span>
</div>
</div>
</dl>
diff --git a/test/unit/core.js b/test/unit/core.js
index 80a93353c..794254869 100644
--- a/test/unit/core.js
+++ b/test/unit/core.js
@@ -552,22 +552,21 @@ if ( !isLocal ) {
}
test("attr('tabindex')", function() {
- expect(5);
-
- // tabindex 0
- equals(jQuery('#listWithTabIndex').attr('tabindex'), 0, 'tabindex of 0');
-
- // positive tabindex
- equals(jQuery('#linkWithTabIndex').attr('tabindex'), 2, 'tabindex of 2');
-
- // negative tabindex
- equals(jQuery('#linkWithNegativeTabIndex').attr('tabindex'), -1, 'negative tabindex');
-
- // regular element without a tabindex
- equals(jQuery('#divWithNoTabIndex').attr('tabindex'), undefined, 'no tabindex, not tabbable by default');
+ expect(8);
- // link without a tabindex
- equals(jQuery('#linkWithNoTabIndex').attr('tabindex'), 0, 'no tabindex, tabbable by default');
+ // elements not natively tabbable
+ equals(jQuery('#listWithTabIndex').attr('tabindex'), 5, 'not natively tabbable, with tabindex set to 0');
+ equals(jQuery('#divWithNoTabIndex').attr('tabindex'), undefined, 'not natively tabbable, no tabindex set');
+
+ // anchor with href
+ equals(jQuery('#linkWithNoTabIndex').attr('tabindex'), 0, 'anchor with href, no tabindex set');
+ equals(jQuery('#linkWithTabIndex').attr('tabindex'), 2, 'anchor with href, tabindex set to 2');
+ equals(jQuery('#linkWithNegativeTabIndex').attr('tabindex'), -1, 'anchor with href, tabindex set to -1');
+
+ // anchor without href
+ equals(jQuery('#linkWithNoHrefWithNoTabIndex').attr('tabindex'), undefined, 'anchor without href, no tabindex set');
+ equals(jQuery('#linkWithNoHrefWithTabIndex').attr('tabindex'), 1, 'anchor without href, tabindex set to 2');
+ equals(jQuery('#linkWithNoHrefWithNegativeTabIndex').attr('tabindex'), -1, 'anchor without href, no tabindex set');
});
test("attr('tabindex', value)", function() {