mirror of
https://github.com/jquery/jquery-ui.git
synced 2025-01-07 20:34:24 +00:00
Menu: Properly remove submenu carat icons and menu dividers during destroy and add a test for this functionality
This commit is contained in:
parent
6e7ee98603
commit
2da2ae5070
@ -46,6 +46,9 @@ test("destroy", function() {
|
|||||||
domEqual("#menu1", function() {
|
domEqual("#menu1", function() {
|
||||||
$("#menu1").menu().menu("destroy");
|
$("#menu1").menu().menu("destroy");
|
||||||
});
|
});
|
||||||
|
domEqual("#menu2", function() {
|
||||||
|
$("#menu2").menu().menu("destroy");
|
||||||
|
});
|
||||||
domEqual("#menu5", function() {
|
domEqual("#menu5", function() {
|
||||||
$("#menu5").menu().menu("destroy");
|
$("#menu5").menu().menu("destroy");
|
||||||
});
|
});
|
||||||
|
18
ui/jquery.ui.menu.js
vendored
18
ui/jquery.ui.menu.js
vendored
@ -137,7 +137,7 @@ $.widget( "ui.menu", {
|
|||||||
this.element
|
this.element
|
||||||
.removeAttr( "aria-activedescendant" )
|
.removeAttr( "aria-activedescendant" )
|
||||||
.find( ".ui-menu" ).andSelf()
|
.find( ".ui-menu" ).andSelf()
|
||||||
.removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
|
.removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" )
|
||||||
.removeAttr( "role" )
|
.removeAttr( "role" )
|
||||||
.removeAttr( "tabIndex" )
|
.removeAttr( "tabIndex" )
|
||||||
.removeAttr( "aria-labelledby" )
|
.removeAttr( "aria-labelledby" )
|
||||||
@ -157,7 +157,16 @@ $.widget( "ui.menu", {
|
|||||||
.removeClass( "ui-corner-all ui-state-hover" )
|
.removeClass( "ui-corner-all ui-state-hover" )
|
||||||
.removeAttr( "tabIndex" )
|
.removeAttr( "tabIndex" )
|
||||||
.removeAttr( "role" )
|
.removeAttr( "role" )
|
||||||
.removeAttr( "aria-haspopup" );
|
.removeAttr( "aria-haspopup" )
|
||||||
|
.children().each( function() {
|
||||||
|
var elem = $( this );
|
||||||
|
if ( elem.data( "ui-menu-submenu-carat" ) ) {
|
||||||
|
elem.remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// destroy menu dividers
|
||||||
|
this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" );
|
||||||
|
|
||||||
// unbind currentEventTarget click event handler
|
// unbind currentEventTarget click event handler
|
||||||
$( currentEventTarget ).unbind( "click.menu" );
|
$( currentEventTarget ).unbind( "click.menu" );
|
||||||
@ -309,11 +318,12 @@ $.widget( "ui.menu", {
|
|||||||
|
|
||||||
submenus.each(function() {
|
submenus.each(function() {
|
||||||
var menu = $( this ),
|
var menu = $( this ),
|
||||||
item = menu.prev( "a" );
|
item = menu.prev( "a" ),
|
||||||
|
submenuCarat = $( '<span class="ui-menu-icon ui-icon ui-icon-carat-1-e"></span>' ).data( "ui-menu-submenu-carat", true );
|
||||||
|
|
||||||
item
|
item
|
||||||
.attr( "aria-haspopup", "true" )
|
.attr( "aria-haspopup", "true" )
|
||||||
.prepend( '<span class="ui-menu-icon ui-icon ui-icon-carat-1-e"></span>' );
|
.prepend( submenuCarat );
|
||||||
menu.attr( "aria-labelledby", item.attr( "id" ) );
|
menu.attr( "aria-labelledby", item.attr( "id" ) );
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user