Skip to content
Permalink
Browse files

Accordion: Handle invalid values for the active option.

  • Loading branch information...
scottgonzalez committed Jan 12, 2011
1 parent 8b23483 commit 368af59137f3dcfd7916a043868c0f1827f761fb
Showing with 22 additions and 11 deletions.
  1. +22 −11 ui/jquery.ui.accordion.js
@@ -173,11 +173,14 @@ $.widget( "ui.accordion", {
},

_setOption: function( key, value ) {
$.Widget.prototype._setOption.apply( this, arguments );

if ( key == "active" ) {
// _activate() will handle invalid values and update this.options
this._activate( value );
return;
}

$.Widget.prototype._setOption.apply( this, arguments );

if ( key == "icons" ) {
this._destroyIcons();
if ( value ) {
@@ -273,20 +276,28 @@ $.widget( "ui.accordion", {
},

_activate: function( index ) {
// TODO: handle invalid values
this.options.active = index;
var active = this._findActive( index )[ 0 ];
if ( !active ) {
if ( !this.options.collapsible ) {
return;
}
index = false;
}
this.options.active = index;
this._eventHandler( { target: active, currentTarget: active } );
},

_findActive: function( selector ) {
return selector
? typeof selector === "number"
? this.headers.filter( ":eq(" + selector + ")" )
: this.headers.not( this.headers.not( selector ) )
: selector === false
? $( [] )
: this.headers.filter( ":eq(0)" );
// handle -1 separately, we should drop support for this
// so that we can allow selecting via negative index, like .eq()
if ( selector === -1 ) {
selector = undefined;
}
return typeof selector === "number" ?
this.headers.eq( selector ) :
selector ?
this.headers.filter( selector ) :
$( [] );
},

_eventHandler: function( event ) {

0 comments on commit 368af59

Please sign in to comment.
You can’t perform that action at this time.