Skip to content

Commit 8ef8d2d

Browse files
petersendiditscottgonzalez
authored andcommitted
Tabs: Pass original event for show and select events. Fixes #5043 - Tabs: pass original event.
1 parent a3cba34 commit 8ef8d2d

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

tests/unit/tabs/tabs_events.js

+13-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
module("tabs: events");
77

88
test('select', function() {
9-
expect(6);
9+
expect(7);
10+
11+
var eventObj;
1012
el = $('#tabs1').tabs({
1113
select: function(event, ui) {
1214
ok(true, 'select triggered after initialization');
@@ -15,29 +17,37 @@ test('select', function() {
1517
equals(ui.tab, el.find('a')[1], 'contain tab as DOM anchor element');
1618
equals(ui.panel, el.find('div')[1], 'contain panel as DOM div element');
1719
equals(ui.index, 1, 'contain index');
20+
evenObj = event;
1821
}
1922
});
2023
el.tabs('select', 1);
24+
25+
el.find( "li:eq(1) a" ).simulate( "click" );
26+
equals( evenObj.originalEvent.type, "click", "select triggered by click" );
2127
});
2228

2329
test('load', function() {
2430
ok(false, "missing test - untested code is broken code.");
2531
});
2632

2733
test('show', function() {
28-
expect(4);
34+
expect(5);
2935

30-
var uiObj;
36+
var uiObj, eventObj;
3137
el = $('#tabs1').tabs({
3238
show: function(event, ui) {
3339
uiObj = ui;
40+
eventObj = event;
3441
}
3542
});
3643
ok(uiObj !== undefined, 'trigger callback after initialization');
3744
equals(uiObj.tab, $('a', el)[0], 'contain tab as DOM anchor element');
3845
equals(uiObj.panel, $('div', el)[0], 'contain panel as DOM div element');
3946
equals(uiObj.index, 0, 'contain index');
4047

48+
el.find( "li:eq(1) a" ).simulate( "click" );
49+
equals( eventObj.originalEvent.type, "click", "show triggered by click" );
50+
4151
});
4252

4353
test('add', function() {

ui/jquery.ui.tabs.js

+9-9
Original file line numberDiff line numberDiff line change
@@ -279,18 +279,18 @@ $.widget( "ui.tabs", {
279279

280280
// Show a tab...
281281
var showTab = showFx
282-
? function( clicked, $show ) {
282+
? function( clicked, $show, event ) {
283283
$( clicked ).closest( "li" ).addClass( "ui-tabs-selected ui-state-active" );
284284
$show.hide().removeClass( "ui-tabs-hide" ) // avoid flicker that way
285285
.animate( showFx, showFx.duration || "normal", function() {
286286
resetStyle( $show, showFx );
287-
self._trigger( "show", null, self._ui( clicked, $show[ 0 ] ) );
287+
self._trigger( "show", event, self._ui( clicked, $show[ 0 ] ) );
288288
});
289289
}
290-
: function( clicked, $show ) {
290+
: function( clicked, $show, event ) {
291291
$( clicked ).closest( "li" ).addClass( "ui-tabs-selected ui-state-active" );
292292
$show.removeClass( "ui-tabs-hide" );
293-
self._trigger( "show", null, self._ui( clicked, $show[ 0 ] ) );
293+
self._trigger( "show", event, self._ui( clicked, $show[ 0 ] ) );
294294
};
295295

296296
// Hide a tab, $show is optional...
@@ -311,7 +311,7 @@ $.widget( "ui.tabs", {
311311

312312
// attach tab event handler, unbind to avoid duplicates from former tabifying...
313313
this.anchors.bind( o.event + ".tabs", function( event ) {
314-
event.preventDefault();
314+
event.preventDefault();
315315
var el = this,
316316
$li = $(el).closest( "li" ),
317317
$hide = self.panels.filter( ":not(.ui-tabs-hide)" ),
@@ -325,9 +325,9 @@ $.widget( "ui.tabs", {
325325
$li.hasClass( "ui-state-disabled" ) ||
326326
$li.hasClass( "ui-state-processing" ) ||
327327
self.panels.filter( ":animated" ).length ||
328-
self._trigger( "select", null, self._ui( this, $show[ 0 ] ) ) === false ) {
328+
self._trigger( "select", event, self._ui( this, $show[ 0 ] ) ) === false ) {
329329
this.blur();
330-
return;
330+
return;
331331
}
332332

333333
o.selected = self.anchors.index( this );
@@ -355,7 +355,7 @@ $.widget( "ui.tabs", {
355355
}
356356

357357
self.element.queue( "tabs", function() {
358-
showTab( el, $show );
358+
showTab( el, $show, event );
359359
});
360360

361361
// TODO make passing in node possible, see also http://dev.jqueryui.com/ticket/3171
@@ -378,7 +378,7 @@ $.widget( "ui.tabs", {
378378
});
379379
}
380380
self.element.queue( "tabs", function() {
381-
showTab( el, $show );
381+
showTab( el, $show, event );
382382
});
383383

384384
self.load( self.anchors.index( this ) );

0 commit comments

Comments
 (0)