]> source.dussan.org Git - jquery-ui.git/commitdiff
Accordion: Start the accordion animation before changing classes. Fixes #6720 - Accor...
authorScott González <scott.gonzalez@gmail.com>
Tue, 11 Jan 2011 18:20:50 +0000 (13:20 -0500)
committerScott González <scott.gonzalez@gmail.com>
Tue, 11 Jan 2011 18:20:50 +0000 (13:20 -0500)
Thanks Tony Ross.

ui/jquery.ui.accordion.js

index 955030ccca052fcdfd498ad81a7ce6957b363b34..064d8dc91ee44f5560a27c81a7b19dd2a049287c 100644 (file)
@@ -338,8 +338,26 @@ $.widget( "ui.accordion", {
                        return;
                }
 
+               // find elements to show and hide
+               var active = this.active,
+                       toShow = clicked.next(),
+                       toHide = this.active.next(),
+                       data = {
+                               options: options,
+                               newHeader: clickedIsActive && options.collapsible ? $([]) : clicked,
+                               oldHeader: this.active,
+                               newContent: clickedIsActive && options.collapsible ? $([]) : toShow,
+                               oldContent: toHide
+                       },
+                       down = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] );
+
+               // when the call to ._toggle() comes after the class changes
+               // it causes a very odd bug in IE 8 (see #6720)
+               this.active = clickedIsActive ? $([]) : clicked;
+               this._toggle( toShow, toHide, data, clickedIsActive, down );
+
                // switch classes
-               this.active
+               active
                        .removeClass( "ui-state-active ui-corner-top" )
                        .addClass( "ui-state-default ui-corner-all" )
                        .children( ".ui-icon" )
@@ -357,21 +375,6 @@ $.widget( "ui.accordion", {
                                .addClass( "ui-accordion-content-active" );
                }
 
-               // find elements to show and hide
-               var toShow = clicked.next(),
-                       toHide = this.active.next(),
-                       data = {
-                               options: options,
-                               newHeader: clickedIsActive && options.collapsible ? $([]) : clicked,
-                               oldHeader: this.active,
-                               newContent: clickedIsActive && options.collapsible ? $([]) : toShow,
-                               oldContent: toHide
-                       },
-                       down = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] );
-
-               this.active = clickedIsActive ? $([]) : clicked;
-               this._toggle( toShow, toHide, data, clickedIsActive, down );
-
                return;
        },