Skip to content

Commit 85ac420

Browse files
committed
Tabs: Fixed select event.
1 parent 7fddb1c commit 85ac420

File tree

2 files changed

+47
-27
lines changed

2 files changed

+47
-27
lines changed

tests/unit/tabs/tabs_deprecated.js

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ test( "show", function() {
267267
ok( !( "originalEvent" in event ), "originalEvent" );
268268
strictEqual( ui.tab, tabs[ 0 ], "ui.tab" );
269269
strictEqual( ui.panel, panels[ 0 ], "ui.panel" );
270-
equal( ui.index, 0 );
270+
equal( ui.index, 0, "ui.index" );
271271
tabs_state( element, 1, 0, 0 );
272272
});
273273
element.tabs( "option", "active", 0 );
@@ -278,7 +278,7 @@ test( "show", function() {
278278
equals( event.originalEvent.type, "click", "originalEvent" );
279279
strictEqual( ui.tab, tabs[ 1 ], "ui.tab" );
280280
strictEqual( ui.panel, panels[ 1 ], "ui.panel" );
281-
equal( ui.index, 1 );
281+
equal( ui.index, 1, "ui.index" );
282282
tabs_state( element, 0, 1, 0 );
283283
});
284284
tabs.eq( 1 ).click();
@@ -292,25 +292,44 @@ test( "show", function() {
292292
tabs_state( element, 0, 0, 0 );
293293
});
294294

295-
test('select', function() {
296-
expect(7);
295+
test( "select", function() {
296+
expect( 13 );
297297

298-
var eventObj;
299-
el = $('#tabs1').tabs({
300-
select: function(event, ui) {
301-
ok(true, 'select triggered after initialization');
302-
equals(this, el[0], "context of callback");
303-
equals(event.type, 'tabsselect', 'event type in callback');
304-
equals(ui.tab, el.find('a')[1], 'contain tab as DOM anchor element');
305-
equals(ui.panel, el.find('div')[1], 'contain panel as DOM div element');
306-
equals(ui.index, 1, 'contain index');
307-
evenObj = event;
308-
}
298+
var element = $( "#tabs1" ).tabs({
299+
active: false,
300+
collapsible: true
301+
}),
302+
tabs = element.find( ".ui-tabs-nav a" ),
303+
panels = element.find( ".ui-tabs-panel" );
304+
305+
// from collapsed
306+
element.one( "tabsselect", function( event, ui ) {
307+
ok( !( "originalEvent" in event ), "originalEvent" );
308+
strictEqual( ui.tab, tabs[ 0 ], "ui.tab" );
309+
strictEqual( ui.panel, panels[ 0 ], "ui.panel" );
310+
equal( ui.index, 0, "ui.index" );
311+
tabs_state( element, 0, 0, 0 );
309312
});
310-
el.tabs('select', 1);
313+
element.tabs( "option", "active", 0 );
314+
tabs_state( element, 1, 0, 0 );
311315

312-
el.find( "li:eq(1) a" ).simulate( "click" );
313-
equals( evenObj.originalEvent.type, "click", "select triggered by click" );
316+
// switching tabs
317+
element.one( "tabsselect", function( event, ui ) {
318+
equals( event.originalEvent.type, "click", "originalEvent" );
319+
strictEqual( ui.tab, tabs[ 1 ], "ui.tab" );
320+
strictEqual( ui.panel, panels[ 1 ], "ui.panel" );
321+
equal( ui.index, 1, "ui.index" );
322+
tabs_state( element, 1, 0, 0 );
323+
});
324+
tabs.eq( 1 ).click();
325+
tabs_state( element, 0, 1, 0 );
326+
327+
// collapsing
328+
element.one( "tabsselect", function( event, ui ) {
329+
ok( false, "collapsing" );
330+
});
331+
element.tabs( "option", "active", false );
332+
tabs_state( element, 0, 0, 0 );
314333
});
315334

316335
module( "tabs (deprecated): methods" );

ui/jquery.ui.tabs.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -153,14 +153,6 @@ $.widget( "ui.tabs", {
153153
return hash ? hash.replace( /:/g, "\\:" ) : "";
154154
},
155155

156-
_ui: function( tab, panel ) {
157-
return {
158-
tab: tab,
159-
panel: panel,
160-
index: this.anchors.index( tab )
161-
};
162-
},
163-
164156
refresh: function() {
165157
var self = this,
166158
options = this.options,
@@ -651,6 +643,15 @@ $.extend( $.ui.tabs, {
651643
// DEPRECATED
652644
if ( $.uiBackCompat !== false ) {
653645

646+
// helper method for a lot of the back compat extensions
647+
$.ui.tabs.prototype._ui = function( tab, panel ) {
648+
return {
649+
tab: tab,
650+
panel: panel,
651+
index: this.anchors.index( tab )
652+
};
653+
};
654+
654655
// url method
655656
(function( $, prototype ) {
656657
prototype.url = function( index, url ) {
@@ -975,7 +976,7 @@ if ( $.uiBackCompat !== false ) {
975976
if ( !ret ) {
976977
return false;
977978
}
978-
if ( type === "beforeActivate" ) {
979+
if ( type === "beforeActivate" && data.newTab.length ) {
979980
ret = _trigger.call( this, "select", event, {
980981
tab: data.newTab[ 0],
981982
panel: data.newPanel[ 0 ],

0 commit comments

Comments
 (0)