aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/unit/tabs/tabs_options.js9
-rw-r--r--ui/jquery.ui.tabs.js12
2 files changed, 14 insertions, 7 deletions
diff --git a/tests/unit/tabs/tabs_options.js b/tests/unit/tabs/tabs_options.js
index 51212b8f0..a9632481e 100644
--- a/tests/unit/tabs/tabs_options.js
+++ b/tests/unit/tabs/tabs_options.js
@@ -144,10 +144,11 @@ test( "{ collapsible: true }", function() {
});
test( "disabled", function() {
- expect( 22 );
+ expect( 23 );
// fully enabled by default
- var element = $( "#tabs1" ).tabs();
+ var event,
+ element = $( "#tabs1" ).tabs();
disabled( element, false );
ok( !element.tabs( "widget" ).hasClass( "ui-state-disabled" ), "after: wrapper doesn't have ui-state-disabled class" );
@@ -178,6 +179,10 @@ test( "disabled", function() {
ok( !element.tabs( "widget" ).hasClass( "ui-tabs-disabled" ), "after: wrapper doesn't have ui-tabs-disabled class" );
ok( !element.tabs( "widget" ).attr( "aria-disabled" ), "after: wrapper doesn't have aria-disabled attr" );
+ event = $.Event( "click" );
+ element.find( ".ui-tabs-anchor" ).eq( 0 ).trigger( event );
+ ok( event.isDefaultPrevented(), "click is prevented for disabled tab" );
+
// enable all tabs
element.tabs( "option", "disabled", [] );
disabled( element, false );
diff --git a/ui/jquery.ui.tabs.js b/ui/jquery.ui.tabs.js
index 4362421db..5f81cda10 100644
--- a/ui/jquery.ui.tabs.js
+++ b/ui/jquery.ui.tabs.js
@@ -477,11 +477,7 @@ $.widget( "ui.tabs", {
},
_setupEvents: function( event ) {
- var events = {
- click: function( event ) {
- event.preventDefault();
- }
- };
+ var events = {};
if ( event ) {
$.each( event.split(" "), function( index, eventName ) {
events[ eventName ] = "_eventHandler";
@@ -489,6 +485,12 @@ $.widget( "ui.tabs", {
}
this._off( this.anchors.add( this.tabs ).add( this.panels ) );
+ // Always prevent the default action, even when disabled
+ this._on( true, this.anchors, {
+ click: function( event ) {
+ event.preventDefault();
+ }
+ });
this._on( this.anchors, events );
this._on( this.tabs, { keydown: "_tabKeydown" } );
this._on( this.panels, { keydown: "_panelKeydown" } );