]> source.dussan.org Git - jquery-ui.git/commitdiff
Accordion: Always have _activate delegate to _eventHandler.
authorScott González <scott.gonzalez@gmail.com>
Sat, 5 Feb 2011 02:52:09 +0000 (21:52 -0500)
committerScott González <scott.gonzalez@gmail.com>
Sat, 5 Feb 2011 02:52:09 +0000 (21:52 -0500)
ui/jquery.ui.accordion.js

index 9bfa354355433dab3f2b4ecfc5e967ba6f15e868..36c1c2c7503197a776593c8ae6f6aef5aea121bf 100644 (file)
@@ -262,46 +262,21 @@ $.widget( "ui.accordion", {
        },
 
        _activate: function( index ) {
-               var active = this._findActive( index )[ 0 ],
-                       eventData = {
-                               oldHeader: this.active,
-                               oldContent: this.active.next(),
-                               newHeader: $(),
-                               newContent: $()
-                       };
-
-               // we found a header to activate, just delegate to the event handler
-               if ( active ) {
-                       if ( active !== this.active[ 0 ] ) {
-                               this._eventHandler({
-                                       target: active,
-                                       currentTarget: active,
-                                       preventDefault: $.noop
-                               });
-                       }
-                       return;
-               }
+               var active = this._findActive( index )[ 0 ];
 
-               // no header to activate, check if we can collapse
-               if ( !this.options.collapsible ) {
+               // trying to activate the already active panel
+               if ( active === this.active[ 0 ] ) {
                        return;
                }
 
-               // allow the activation to be canceled
-               if ( this._trigger( "beforeActivate", null, eventData ) === false ) {
-                       return;
-               }
+               // trying to collapse, simulate a click on the currently active header
+               active = active || this.active;
 
-               this.active
-                       .removeClass( "ui-state-active ui-corner-top" )
-                       .addClass( "ui-state-default ui-corner-all" )
-                       .children( ".ui-accordion-header-icon" )
-                               .removeClass( this.options.icons.activeHeader )
-                               .addClass( this.options.icons.header );
-               this.active.next().addClass( "ui-accordion-content-active" );
-               this.options.active = false;
-               this.active = $();
-               this._toggle( eventData );
+               this._eventHandler({
+                       target: active,
+                       currentTarget: active,
+                       preventDefault: $.noop
+               });
        },
 
        _findActive: function( selector ) {