@@ -181,14 +181,7 @@ $.widget( "ui.tabs", {
181181 this . lis . addClass ( "ui-state-default ui-corner-top" ) ;
182182 this . panels . addClass ( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) ;
183183
184- if ( ! options . disabled . length ) {
185- options . disabled = false ;
186- }
187-
188- // disable tabs
189- for ( var i = 0 , li ; ( li = this . lis [ i ] ) ; i ++ ) {
190- $ ( li ) . toggleClass ( "ui-state-disabled" , $ . inArray ( i , options . disabled ) !== - 1 ) ;
191- }
184+ this . _setupDisabled ( options . disabled ) ;
192185
193186 this . _setupEvents ( options . event ) ;
194187
@@ -260,6 +253,23 @@ $.widget( "ui.tabs", {
260253 . data ( "destroy.tabs" , true ) ;
261254 } ,
262255
256+ _setupDisabled : function ( disabled ) {
257+ if ( $ . isArray ( disabled ) ) {
258+ if ( ! disabled . length ) {
259+ disabled = false ;
260+ } else if ( disabled . length === this . anchors . length ) {
261+ disabled = true ;
262+ }
263+ }
264+
265+ // disable tabs
266+ for ( var i = 0 , li ; ( li = this . lis [ i ] ) ; i ++ ) {
267+ $ ( li ) . toggleClass ( "ui-state-disabled" , ( disabled === true || $ . inArray ( i , disabled ) !== - 1 ) ) ;
268+ }
269+
270+ this . options . disabled = disabled ;
271+ } ,
272+
263273 _setupFx : function ( fx ) {
264274 // set up animations
265275 if ( fx ) {
@@ -502,53 +512,37 @@ $.widget( "ui.tabs", {
502512 } ,
503513
504514 enable : function ( index ) {
515+ var disabled = this . options . disabled ;
516+
505517 if ( index === undefined ) {
506- for ( var i = 0 , len = this . lis . length ; i < len ; i ++ ) {
507- this . enable ( i ) ;
518+ disabled = false ;
519+ } else {
520+ index = this . _getIndex ( index ) ;
521+ if ( $ . isArray ( disabled ) ) {
522+ disabled = $ . map ( disabled , function ( num ) {
523+ return num !== index ? num : null ;
524+ } ) ;
525+ } else {
526+ disabled = [ index ] ;
508527 }
509- return this ;
510528 }
511- index = this . _getIndex ( index ) ;
512- var o = this . options ;
513- if ( ! o . disabled || ( $ . isArray ( o . disabled ) && $ . inArray ( index , o . disabled ) == - 1 ) ) {
514- return ;
515- }
516-
517- this . lis . eq ( index ) . removeClass ( "ui-state-disabled" ) ;
518- o . disabled = this . lis . map ( function ( i ) {
519- return $ ( this ) . is ( ".ui-state-disabled" ) ? i : null ;
520- } ) . get ( ) ;
521-
522- if ( ! o . disabled . length ) {
523- o . disabled = false ;
524- }
525-
526- return this ;
529+ this . _setupDisabled ( disabled ) ;
527530 } ,
528531
529532 disable : function ( index ) {
533+ var disabled = this . options . disabled ;
534+
530535 if ( index === undefined ) {
531- for ( var i = 0 , len = this . lis . length ; i < len ; i ++ ) {
532- this . disable ( i ) ;
533- }
534- return this ;
535- }
536- index = this . _getIndex ( index ) ;
537- var o = this . options ;
538- if ( ! o . disabled || ( $ . isArray ( o . disabled ) && $ . inArray ( index , o . disabled ) == - 1 ) ) {
539- this . lis . eq ( index ) . addClass ( "ui-state-disabled" ) ;
540-
541- o . disabled = this . lis . map ( function ( i ) {
542- return $ ( this ) . is ( ".ui-state-disabled" ) ? i : null ;
543- } ) . get ( ) ;
544-
545- if ( o . disabled . length === this . anchors . length ) {
546- o . disabled = true ;
536+ disabled = true ;
537+ } else {
538+ index = this . _getIndex ( index ) ;
539+ if ( $ . isArray ( disabled ) ) {
540+ disabled = $ . merge ( [ index ] , disabled ) . sort ( ) ;
541+ } else {
542+ disabled = [ index ] ;
547543 }
548-
549544 }
550-
551- return this ;
545+ this . _setupDisabled ( disabled ) ;
552546 } ,
553547
554548 load : function ( index , event ) {
0 commit comments