diff options
Diffstat (limited to 'ui/jquery.ui.menu.js')
-rw-r--r-- | ui/jquery.ui.menu.js | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/ui/jquery.ui.menu.js b/ui/jquery.ui.menu.js index b73018a19..4fac02d2a 100644 --- a/ui/jquery.ui.menu.js +++ b/ui/jquery.ui.menu.js @@ -18,7 +18,7 @@ var idIncrement = 0; $.widget( "ui.menu", { version: "@VERSION", defaultElement: "<ul>", - delay: 150, + delay: 300, options: { menus: "ul", position: { @@ -332,12 +332,12 @@ $.widget( "ui.menu", { }, blur: function( event ) { + clearTimeout( this.timer ); + if ( !this.active ) { return; } - clearTimeout( this.timer ); - this.active.children( "a" ).removeClass( "ui-state-focus" ); this.active = null; @@ -381,20 +381,22 @@ $.widget( "ui.menu", { }, collapseAll: function( event, all ) { + clearTimeout( this.timer ); + this.timer = this._delay( function() { + // if we were passed an event, look for the submenu that contains the event + var currentMenu = all ? this.element : + $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); - // if we were passed an event, look for the submenu that contains the event - var currentMenu = all ? this.element : - $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); - - // if we found no valid submenu ancestor, use the main menu to close all sub menus anyway - if ( !currentMenu.length ) { - currentMenu = this.element; - } + // if we found no valid submenu ancestor, use the main menu to close all sub menus anyway + if ( !currentMenu.length ) { + currentMenu = this.element; + } - this._close( currentMenu ); + this._close( currentMenu ); - this.blur( event ); - this.activeMenu = currentMenu; + this.blur( event ); + this.activeMenu = currentMenu; + }, this.delay); }, // With no arguments, closes the currently active menu - if nothing is active @@ -445,11 +447,11 @@ $.widget( "ui.menu", { this._move( "prev", "last", event ); }, - first: function() { + isFirstItem: function() { return this.active && !this.active.prevAll( ".ui-menu-item" ).length; }, - last: function() { + isLastItem: function() { return this.active && !this.active.nextAll( ".ui-menu-item" ).length; }, @@ -478,7 +480,7 @@ $.widget( "ui.menu", { this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() ); return; } - if ( this.last() ) { + if ( this.isLastItem() ) { return; } if ( this._hasScroll() ) { @@ -502,7 +504,7 @@ $.widget( "ui.menu", { this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() ); return; } - if ( this.first() ) { + if ( this.isFirstItem() ) { return; } if ( this._hasScroll() ) { |