Skip to content

Commit 2da2ae5

Browse files
committed
Menu: Properly remove submenu carat icons and menu dividers during destroy and add a test for this functionality
1 parent 6e7ee98 commit 2da2ae5

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

tests/unit/menu/menu_methods.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ test("destroy", function() {
4646
domEqual("#menu1", function() {
4747
$("#menu1").menu().menu("destroy");
4848
});
49+
domEqual("#menu2", function() {
50+
$("#menu2").menu().menu("destroy");
51+
});
4952
domEqual("#menu5", function() {
5053
$("#menu5").menu().menu("destroy");
5154
});

ui/jquery.ui.menu.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ $.widget( "ui.menu", {
137137
this.element
138138
.removeAttr( "aria-activedescendant" )
139139
.find( ".ui-menu" ).andSelf()
140-
.removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
140+
.removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" )
141141
.removeAttr( "role" )
142142
.removeAttr( "tabIndex" )
143143
.removeAttr( "aria-labelledby" )
@@ -157,7 +157,16 @@ $.widget( "ui.menu", {
157157
.removeClass( "ui-corner-all ui-state-hover" )
158158
.removeAttr( "tabIndex" )
159159
.removeAttr( "role" )
160-
.removeAttr( "aria-haspopup" );
160+
.removeAttr( "aria-haspopup" )
161+
.children().each( function() {
162+
var elem = $( this );
163+
if ( elem.data( "ui-menu-submenu-carat" ) ) {
164+
elem.remove();
165+
}
166+
});
167+
168+
// destroy menu dividers
169+
this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" );
161170

162171
// unbind currentEventTarget click event handler
163172
$( currentEventTarget ).unbind( "click.menu" );
@@ -309,11 +318,12 @@ $.widget( "ui.menu", {
309318

310319
submenus.each(function() {
311320
var menu = $( this ),
312-
item = menu.prev( "a" );
321+
item = menu.prev( "a" ),
322+
submenuCarat = $( '<span class="ui-menu-icon ui-icon ui-icon-carat-1-e"></span>' ).data( "ui-menu-submenu-carat", true );
313323

314324
item
315325
.attr( "aria-haspopup", "true" )
316-
.prepend( '<span class="ui-menu-icon ui-icon ui-icon-carat-1-e"></span>' );
326+
.prepend( submenuCarat );
317327
menu.attr( "aria-labelledby", item.attr( "id" ) );
318328
});
319329
},

0 commit comments

Comments
 (0)