diff options
author | kborchers <k_borchers@yahoo.com> | 2011-10-12 13:01:19 -0500 |
---|---|---|
committer | kborchers <k_borchers@yahoo.com> | 2011-10-12 16:13:34 -0500 |
commit | 9a274c06756dabb2797997a27393cc7da4eed5f5 (patch) | |
tree | d69b6a9c09ac1f104140762ef9d4aff71b457a93 | |
parent | 75415b35eafbd09fbc804d6cfe6d9d6b6b65d17d (diff) | |
download | jquery-ui-9a274c06756dabb2797997a27393cc7da4eed5f5.tar.gz jquery-ui-9a274c06756dabb2797997a27393cc7da4eed5f5.zip |
Menu: Check if menu is scrolling to prevent inadvertent mouseover events from being fired on scroll
-rw-r--r-- | ui/jquery.ui.menu.js | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/ui/jquery.ui.menu.js b/ui/jquery.ui.menu.js index 6d9db8879..944e47b7c 100644 --- a/ui/jquery.ui.menu.js +++ b/ui/jquery.ui.menu.js @@ -28,6 +28,7 @@ $.widget( "ui.menu", { }, _create: function() { this.activeMenu = this.element; + this.isScrolling = false; this.menuId = this.element.attr( "id" ) || "ui-menu-" + idIncrement++; if ( this.element.find( ".ui-icon" ).length ) { this.element.addClass( "ui-menu-icons" ); @@ -57,10 +58,13 @@ $.widget( "ui.menu", { }, "mouseover .ui-menu-item": function( event ) { event.stopImmediatePropagation(); - var target = $( event.currentTarget ); - // Remove ui-state-active class from siblings of the newly focused menu item to avoid a jump caused by adjacent elements both having a class with a border - target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" ); - this.focus( event, target ); + if ( !this.isScrolling ) { + var target = $( event.currentTarget ); + // Remove ui-state-active class from siblings of the newly focused menu item to avoid a jump caused by adjacent elements both having a class with a border + target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" ); + this.focus( event, target ); + } + this.isScrolling = false; }, "mouseleave": "collapseAll", "mouseleave .ui-menu": "collapseAll", @@ -74,6 +78,10 @@ $.widget( "ui.menu", { this.collapseAll( event ); } }, 0); + }, + scroll: function( event ) { + // Keep track of scrolling to prevent mouseover from firing inadvertently when scrolling the menu + this.isScrolling = true; } }); |