]> source.dussan.org Git - jquery-ui.git/commitdiff
Tabs: Pass original event for show and select events. Fixes #5043 - Tabs: pass origin...
authorDavid Petersen <public@petersendidit.com>
Tue, 8 Feb 2011 00:32:32 +0000 (19:32 -0500)
committerScott González <scott.gonzalez@gmail.com>
Tue, 15 Feb 2011 13:56:19 +0000 (08:56 -0500)
tests/unit/tabs/tabs_events.js
ui/jquery.ui.tabs.js

index 1203d02df11009622638b664cd2b4848c24ce04c..24fb62f9b728b47aaf17c2c80aefcb1648ce5066 100644 (file)
@@ -6,7 +6,9 @@
 module("tabs: events");
 
 test('select', function() {
-       expect(6);
+       expect(7);
+
+       var eventObj;
        el = $('#tabs1').tabs({
                select: function(event, ui) {
                        ok(true, 'select triggered after initialization');
@@ -15,9 +17,13 @@ test('select', function() {
                        equals(ui.tab, el.find('a')[1], 'contain tab as DOM anchor element');
                        equals(ui.panel, el.find('div')[1], 'contain panel as DOM div element');
                        equals(ui.index, 1, 'contain index');
+                       evenObj = event;
                }
        });
        el.tabs('select', 1);
+
+       el.find( "li:eq(1) a" ).simulate( "click" );
+       equals( evenObj.originalEvent.type, "click", "select triggered by click" );
 });
 
 test('load', function() {
@@ -25,12 +31,13 @@ test('load', function() {
 });
 
 test('show', function() {
-       expect(4);
+       expect(5);
 
-       var uiObj;
+       var uiObj, eventObj;
        el = $('#tabs1').tabs({
                show: function(event, ui) {
                        uiObj = ui;
+                       eventObj = event;
                }
        });
        ok(uiObj !== undefined, 'trigger callback after initialization');
@@ -38,6 +45,9 @@ test('show', function() {
        equals(uiObj.panel, $('div', el)[0], 'contain panel as DOM div element');
        equals(uiObj.index, 0, 'contain index');
 
+       el.find( "li:eq(1) a" ).simulate( "click" );
+       equals( eventObj.originalEvent.type, "click", "show triggered by click" );
+
 });
 
 test('add', function() {
index 21ad6ddec6a2b96ad899be3c472f2cfe9bcb6342..c1c78653a5ee2ac0e20d35d70896fedb591a1002 100755 (executable)
@@ -279,18 +279,18 @@ $.widget( "ui.tabs", {
 
                // Show a tab...
                var showTab = showFx
-                       ? function( clicked, $show ) {
+                       ? function( clicked, $show, event ) {
                                $( clicked ).closest( "li" ).addClass( "ui-tabs-selected ui-state-active" );
                                $show.hide().removeClass( "ui-tabs-hide" ) // avoid flicker that way
                                        .animate( showFx, showFx.duration || "normal", function() {
                                                resetStyle( $show, showFx );
-                                               self._trigger( "show", null, self._ui( clicked, $show[ 0 ] ) );
+                                               self._trigger( "show", event, self._ui( clicked, $show[ 0 ] ) );
                                        });
                        }
-                       : function( clicked, $show ) {
+                       : function( clicked, $show, event ) {
                                $( clicked ).closest( "li" ).addClass( "ui-tabs-selected ui-state-active" );
                                $show.removeClass( "ui-tabs-hide" );
-                               self._trigger( "show", null, self._ui( clicked, $show[ 0 ] ) );
+                               self._trigger( "show", event, self._ui( clicked, $show[ 0 ] ) );
                        };
 
                // Hide a tab, $show is optional...
@@ -311,7 +311,7 @@ $.widget( "ui.tabs", {
 
                // attach tab event handler, unbind to avoid duplicates from former tabifying...
                this.anchors.bind( o.event + ".tabs", function( event ) {
-      event.preventDefault();
+                       event.preventDefault();
                        var el = this,
                                $li = $(el).closest( "li" ),
                                $hide = self.panels.filter( ":not(.ui-tabs-hide)" ),
@@ -325,9 +325,9 @@ $.widget( "ui.tabs", {
                                $li.hasClass( "ui-state-disabled" ) ||
                                $li.hasClass( "ui-state-processing" ) ||
                                self.panels.filter( ":animated" ).length ||
-                               self._trigger( "select", null, self._ui( this, $show[ 0 ] ) ) === false ) {
+                               self._trigger( "select", event, self._ui( this, $show[ 0 ] ) ) === false ) {
                                this.blur();
-        return;
+                               return;
                        }
 
                        o.selected = self.anchors.index( this );
@@ -355,7 +355,7 @@ $.widget( "ui.tabs", {
                                        }
 
                                        self.element.queue( "tabs", function() {
-                                               showTab( el, $show );
+                                               showTab( el, $show, event );
                                        });
 
                                        // TODO make passing in node possible, see also http://dev.jqueryui.com/ticket/3171
@@ -378,7 +378,7 @@ $.widget( "ui.tabs", {
                                        });
                                }
                                self.element.queue( "tabs", function() {
-                                       showTab( el, $show );
+                                       showTab( el, $show, event );
                                });
 
                                self.load( self.anchors.index( this ) );