From c1cda180a93a6c0a63cf21a68dacb54233e03d03 Mon Sep 17 00:00:00 2001 From: Scott González Date: Tue, 6 Sep 2011 13:01:01 -0400 Subject: Tabs: Find panels using aria-controls instead of index for remove method. Fixes #7698 - Panels do not sort when a tab is sorted which can cause a mismatch error when a tab is removed. --- ui/jquery.ui.tabs.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'ui') diff --git a/ui/jquery.ui.tabs.js b/ui/jquery.ui.tabs.js index d4c5f6b69..a1bf72cb1 100644 --- a/ui/jquery.ui.tabs.js +++ b/ui/jquery.ui.tabs.js @@ -792,11 +792,14 @@ if ( $.uiBackCompat !== false ) { index = this._getIndex( index ); var options = this.options, tab = this.lis.eq( index ).remove(), - panel = this.panels.eq( index ).remove(); + panel = this._getPanelForTab( tab.find( "a[aria-controls]" ) ).remove(); // If selected tab was removed focus tab to the right or // in case the last tab was removed the tab to the left. - if ( tab.hasClass( "ui-tabs-active" ) && this.anchors.length > 1) { + // We check for more than 2 tabs, because if there are only 2, + // then when we remove this tab, there will only be one tab left + // so we don't need to detect which tab to activate. + if ( tab.hasClass( "ui-tabs-active" ) && this.anchors.length > 2 ) { this._activate( index + ( index + 1 < this.anchors.length ? 1 : -1 ) ); } -- cgit v1.2.3