diff options
author | Felix Nagel <info@felixnagel.com> | 2013-01-02 19:38:55 +0100 |
---|---|---|
committer | Felix Nagel <info@felixnagel.com> | 2013-01-02 19:38:55 +0100 |
commit | 1ba02e9c5fc96bfcdd82e6a72369f54a30a47ecb (patch) | |
tree | e21226ccc9b62a6a4a03fd4b7c7d62b889bd6aa7 /ui/jquery.ui.menu.js | |
parent | 2eb92232f3c0fa7b6643dce9197dae48f5b174ef (diff) | |
parent | 18b8ffd796ba557a7c939d67a1551b54402a7eb9 (diff) | |
download | jquery-ui-1ba02e9c5fc96bfcdd82e6a72369f54a30a47ecb.tar.gz jquery-ui-1ba02e9c5fc96bfcdd82e6a72369f54a30a47ecb.zip |
Merge branch 'master' into selectmenu
Diffstat (limited to 'ui/jquery.ui.menu.js')
-rw-r--r-- | ui/jquery.ui.menu.js | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/ui/jquery.ui.menu.js b/ui/jquery.ui.menu.js index 7f37b6b06..a666e934d 100644 --- a/ui/jquery.ui.menu.js +++ b/ui/jquery.ui.menu.js @@ -15,8 +15,6 @@ */ (function( $, undefined ) { -var mouseHandled = false; - $.widget( "ui.menu", { version: "@VERSION", defaultElement: "<ul>", @@ -40,6 +38,9 @@ $.widget( "ui.menu", { _create: function() { this.activeMenu = this.element; + // flag used to prevent firing of the click handler + // as the event bubbles up through nested menus + this.mouseHandled = false; this.element .uniqueId() .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) @@ -73,8 +74,8 @@ $.widget( "ui.menu", { }, "click .ui-menu-item:has(a)": function( event ) { var target = $( event.target ).closest( ".ui-menu-item" ); - if ( !mouseHandled && target.not( ".ui-state-disabled" ).length ) { - mouseHandled = true; + if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) { + this.mouseHandled = true; this.select( event ); // Open submenu on click @@ -130,7 +131,7 @@ $.widget( "ui.menu", { } // Reset the mouseHandled flag - mouseHandled = false; + this.mouseHandled = false; } }); }, @@ -343,6 +344,15 @@ $.widget( "ui.menu", { }[ this.options.role ]; }, + _setOption: function( key, value ) { + if ( key === "icons" ) { + this.element.find( ".ui-menu-icon" ) + .removeClass( this.options.icons.submenu ) + .addClass( value.submenu ); + } + this._super( key, value ); + }, + focus: function( event, item ) { var nested, focused; this.blur( event, event && event.type === "focus" ); |