]> source.dussan.org Git - jquery-ui.git/commitdiff
Tabs: When adding a new tab with an existing panel, don't move it. Fixes #4578 -...
authorDavid Murdoch <musicisair@yahoo.com>
Mon, 16 May 2011 16:30:23 +0000 (12:30 -0400)
committerScott González <scott.gonzalez@gmail.com>
Mon, 16 May 2011 16:30:23 +0000 (12:30 -0400)
ui/jquery.ui.tabs.js

index 3ea6017d7961d364bd6493a31c9648ce362cc4a9..0df35be339cee3b27a4b0c707f432f25f85736fd 100644 (file)
@@ -775,20 +775,30 @@ if ( $.uiBackCompat !== false ) {
                        li.addClass( "ui-state-default ui-corner-top" ).data( "destroy.tabs", true );
                        li.find( "a" ).attr( "aria-controls", id );
 
+                       var doInsertAfter = index >= this.lis.length;
+
                        // try to find an existing element before creating a new one
                        var panel = this.element.find( "#" + id );
                        if ( !panel.length ) {
                                panel = this._createPanel( id );
+                               if ( doInsertAfter ) {
+                                       if ( index > 0 ) {
+                                               panel.insertAfter( this.panels.eq( -1 ) );
+                                       } else {
+                                               panel.appendTo( this.element );
+                                       }
+                               } else {
+                                       panel.insertBefore( this.panels[ index ] );
+                               }
                        }
                        panel.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ).hide();
 
-                       if ( index >= this.lis.length ) {
+                       if ( doInsertAfter ) {
                                li.appendTo( this.list );
-                               panel.appendTo( this.list[ 0 ].parentNode );
                        } else {
                                li.insertBefore( this.lis[ index ] );
-                               panel.insertBefore( this.panels[ index ] );
                        }
+
                        options.disabled = $.map( options.disabled, function( n ) {
                                return n >= index ? ++n : n;
                        });