Skip to content

Commit

Permalink
Menu: Only set the mouseHandled flag if the event is going to bubble.…
Browse files Browse the repository at this point in the history
… Fixes #9469: on( "menuselect" )

not firing every time.
(cherry picked from commit 484e382)
  • Loading branch information
tjvantoll authored and scottgonzalez committed Nov 26, 2013
1 parent 1a2284d commit b02a32f
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
15 changes: 15 additions & 0 deletions tests/unit/menu/menu_events.js
Expand Up @@ -619,4 +619,19 @@ test( "ensure default is prevented when clicking on anchors in disabled menus ",
equal( logOutput(), "click,1,afterclick,disable,enable,3", "Click order not valid." );
});

test( "#9469: Stopping propagation in a select event should not suppress subsequent select events.", function() {
expect( 1 );
var element = $( "#menu1" ).menu({
select: function( event, ui ) {
log();
event.stopPropagation();
}
});

click( element, "1" );
click( element, "2" );

equal( logOutput(), "1,2", "Both select events were not triggered." );
});

})( jQuery );
8 changes: 6 additions & 2 deletions ui/jquery.ui.menu.js
Expand Up @@ -75,9 +75,13 @@ $.widget( "ui.menu", {
"click .ui-menu-item:has(a)": function( event ) {
var target = $( event.target ).closest( ".ui-menu-item" );
if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
this.mouseHandled = true;

this.select( event );

// Only set the mouseHandled flag if the event will bubble, see #9469.
if ( !event.isPropagationStopped() ) {
this.mouseHandled = true;
}

// Open submenu on click
if ( target.has( ".ui-menu" ).length ) {
this.expand( event );
Expand Down

0 comments on commit b02a32f

Please sign in to comment.