Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Menu: Don't reset active element until after triggering blur event
This ensures that `ui.item` actually exists in the `blur` event.

Fixes #14945
Closes gh-1696
  • Loading branch information
scottgonzalez committed Apr 13, 2016
1 parent c19fc10 commit 57f801f
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
16 changes: 10 additions & 6 deletions tests/unit/menu/events.js
Expand Up @@ -48,20 +48,22 @@ test( "handle click on custom item menu", function() {
} );

asyncTest( "handle blur", function() {
expect( 1 );
expect( 2 );
var blurHandled = false,
index = 1,
element = $( "#menu1" ).menu( {
blur: function( event ) {
blur: function( event, ui ) {

// Ignore duplicate blur event fired by IE
if ( !blurHandled ) {
blurHandled = true;
equal( event.type, "menublur", "blur event.type is 'menublur'" );
strictEqual( ui.item[ 0 ], element.children()[ index ], "ui.item" );
}
}
} );

click( element, "1" );
click( element, index );
setTimeout( function() {
element.trigger( "blur" );
setTimeout( function() {
Expand All @@ -71,20 +73,22 @@ asyncTest( "handle blur", function() {
} );

asyncTest( "handle blur via click outside", function() {
expect( 1 );
expect( 2 );
var blurHandled = false,
index = 1,
element = $( "#menu1" ).menu( {
blur: function( event ) {
blur: function( event, ui ) {

// Ignore duplicate blur event fired by IE
if ( !blurHandled ) {
blurHandled = true;
equal( event.type, "menublur", "blur event.type is 'menublur'" );
strictEqual( ui.item[ 0 ], element.children()[ index ], "ui.item" );
}
}
} );

click( element, "1" );
click( element, index );
setTimeout( function() {
$( "<a>", { id: "remove" } ).appendTo( "body" ).trigger( "click" );
setTimeout( function() {
Expand Down
2 changes: 1 addition & 1 deletion ui/widgets/menu.js
Expand Up @@ -434,9 +434,9 @@ return $.widget( "ui.menu", {

this._removeClass( this.active.children( ".ui-menu-item-wrapper" ),
null, "ui-state-active" );
this.active = null;

this._trigger( "blur", event, { item: this.active } );
this.active = null;
},

_startOpening: function( submenu ) {
Expand Down

0 comments on commit 57f801f

Please sign in to comment.