summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2012-11-14 14:59:12 -0500
committerScott González <scott.gonzalez@gmail.com>2012-11-14 14:59:12 -0500
commitd7ee9569e18ac46ad3f0a23e790e48d3ee5a44c4 (patch)
treecdb26a09088d12f04854f4b5be2a6bc6d03db1fd
parent0be0c2603c8289027ce93a1daa38c8599c639b54 (diff)
downloadjquery-ui-d7ee9569e18ac46ad3f0a23e790e48d3ee5a44c4.tar.gz
jquery-ui-d7ee9569e18ac46ad3f0a23e790e48d3ee5a44c4.zip
Tabs: Trigger the select event when collapsing. Fixes #8813 - Tabs: select event not triggering when collapsible:true.
-rw-r--r--tests/unit/tabs/tabs_deprecated.js10
-rw-r--r--ui/jquery.ui.tabs.js15
2 files changed, 17 insertions, 8 deletions
diff --git a/tests/unit/tabs/tabs_deprecated.js b/tests/unit/tabs/tabs_deprecated.js
index 297a4546e..36ad98f38 100644
--- a/tests/unit/tabs/tabs_deprecated.js
+++ b/tests/unit/tabs/tabs_deprecated.js
@@ -359,7 +359,7 @@ test( "show", function() {
});
test( "select", function() {
- expect( 13 );
+ expect( 18 );
var element = $( "#tabs1" ).tabs({
active: false,
@@ -391,8 +391,12 @@ test( "select", function() {
state( element, 0, 1, 0 );
// collapsing
- element.one( "tabsselect", function() {
- ok( false, "collapsing" );
+ element.one( "tabsselect", function( event, ui ) {
+ ok( !( "originalEvent" in event ), "originalEvent" );
+ strictEqual( ui.tab, anchors[ 1 ], "ui.tab" );
+ strictEqual( ui.panel, panels[ 1 ], "ui.panel" );
+ equal( ui.index, 1, "ui.index" );
+ state( element, 0, 1, 0 );
});
element.tabs( "option", "active", false );
state( element, 0, 0, 0 );
diff --git a/ui/jquery.ui.tabs.js b/ui/jquery.ui.tabs.js
index 9b97f9cda..8e09764b7 100644
--- a/ui/jquery.ui.tabs.js
+++ b/ui/jquery.ui.tabs.js
@@ -1187,15 +1187,20 @@ if ( $.uiBackCompat !== false ) {
}
},
_trigger: function( type, event, data ) {
- var ret = this._superApply( arguments );
+ var tab, panel,
+ ret = this._superApply( arguments );
+
if ( !ret ) {
return false;
}
- if ( type === "beforeActivate" && data.newTab.length ) {
+
+ if ( type === "beforeActivate" ) {
+ tab = data.newTab.length ? data.newTab : data.oldTab;
+ panel = data.newPanel.length ? data.newPanel : data.oldPanel;
ret = this._super( "select", event, {
- tab: data.newTab.find( ".ui-tabs-anchor" )[ 0],
- panel: data.newPanel[ 0 ],
- index: data.newTab.closest( "li" ).index()
+ tab: tab.find( ".ui-tabs-anchor" )[ 0],
+ panel: panel[ 0 ],
+ index: tab.closest( "li" ).index()
});
} else if ( type === "activate" && data.newTab.length ) {
ret = this._super( "show", event, {