aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2012-10-12 11:07:04 -0400
committerScott González <scott.gonzalez@gmail.com>2012-10-12 11:07:04 -0400
commit94221c4e5b11496ef927889e1541d84b5746fb31 (patch)
tree7ffa63470bd85203ff03f22a4f0769cd62c3c172
parent1ee090ea9e03c800a764d992506869384409bdb6 (diff)
downloadjquery-ui-94221c4e5b11496ef927889e1541d84b5746fb31.tar.gz
jquery-ui-94221c4e5b11496ef927889e1541d84b5746fb31.zip
Tabs: Use aria-controls instead of the anchor's href to match against location.hash. Fixes #8660 - Tabs: Set initial active tab from location hash for ajax tabs.
-rw-r--r--tests/unit/tabs/tabs_options.js8
-rw-r--r--ui/jquery.ui.tabs.js9
2 files changed, 12 insertions, 5 deletions
diff --git a/tests/unit/tabs/tabs_options.js b/tests/unit/tabs/tabs_options.js
index 5a90ff895..1b468f2b6 100644
--- a/tests/unit/tabs/tabs_options.js
+++ b/tests/unit/tabs/tabs_options.js
@@ -7,7 +7,7 @@ var disabled = TestHelpers.tabs.disabled,
module( "tabs: options" );
test( "{ active: default }", function() {
- expect( 4 );
+ expect( 6 );
var element = $( "#tabs1" ).tabs();
equal( element.tabs( "option", "active" ), 0, "should be 0 by default" );
@@ -19,6 +19,12 @@ test( "{ active: default }", function() {
equal( element.tabs( "option", "active" ), 2, "should be 2 based on URL" );
state( element, 0, 0, 1 );
element.tabs( "destroy" );
+
+ location.hash = "#custom-id";
+ element = $( "#tabs2" ).tabs();
+ equal( element.tabs( "option", "active" ), 3, "should be 3 based on URL" );
+ state( element, 0, 0, 0, 1, 0 );
+ element.tabs( "destroy" );
location.hash = "#";
});
diff --git a/ui/jquery.ui.tabs.js b/ui/jquery.ui.tabs.js
index baf55d8dc..7d38fb46e 100644
--- a/ui/jquery.ui.tabs.js
+++ b/ui/jquery.ui.tabs.js
@@ -51,7 +51,8 @@ $.widget( "ui.tabs", {
var panel,
that = this,
options = this.options,
- active = options.active;
+ active = options.active,
+ locationHash = location.hash.substring( 1 );
this.running = false;
@@ -80,9 +81,9 @@ $.widget( "ui.tabs", {
if ( active === null ) {
// check the fragment identifier in the URL
- if ( location.hash ) {
- this.anchors.each(function( i, anchor ) {
- if ( anchor.hash === location.hash ) {
+ if ( locationHash ) {
+ this.tabs.each(function( i, tab ) {
+ if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
active = i;
return false;
}