diff options
author | Scott González <scott.gonzalez@gmail.com> | 2012-10-12 11:07:04 -0400 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2012-10-12 11:07:04 -0400 |
commit | 94221c4e5b11496ef927889e1541d84b5746fb31 (patch) | |
tree | 7ffa63470bd85203ff03f22a4f0769cd62c3c172 | |
parent | 1ee090ea9e03c800a764d992506869384409bdb6 (diff) | |
download | jquery-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.js | 8 | ||||
-rw-r--r-- | ui/jquery.ui.tabs.js | 9 |
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; } |