]> source.dussan.org Git - jquery-ui.git/commitdiff
Menu: Properly remove submenu carat icons and menu dividers during destroy and add...
authorkborchers <kris.borchers@gmail.com>
Fri, 1 Jun 2012 05:03:16 +0000 (00:03 -0500)
committerkborchers <kris.borchers@gmail.com>
Fri, 1 Jun 2012 05:03:16 +0000 (00:03 -0500)
tests/unit/menu/menu_methods.js
ui/jquery.ui.menu.js

index c17986816357f4f7d73edab1f565c2e7610eb3e0..3a7b2d8fe2be7517e32a5020c8c7def0e5c309c8 100644 (file)
@@ -46,6 +46,9 @@ test("destroy", function() {
        domEqual("#menu1", function() {
                $("#menu1").menu().menu("destroy");
        });
+       domEqual("#menu2", function() {
+               $("#menu2").menu().menu("destroy");
+       });
        domEqual("#menu5", function() {
                $("#menu5").menu().menu("destroy");
        });
index 4bcfbfdb2a4125c23e7289e47b7fce4501ad9dcd..986cca1684d0a1176492067ab7b0c7e638a7aeda 100644 (file)
@@ -137,7 +137,7 @@ $.widget( "ui.menu", {
                this.element
                        .removeAttr( "aria-activedescendant" )
                        .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( "tabIndex" )
                                .removeAttr( "aria-labelledby" )
@@ -157,7 +157,16 @@ $.widget( "ui.menu", {
                                .removeClass( "ui-corner-all ui-state-hover" )
                                .removeAttr( "tabIndex" )
                                .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
                $( currentEventTarget ).unbind( "click.menu" );
@@ -309,11 +318,12 @@ $.widget( "ui.menu", {
 
                submenus.each(function() {
                        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
                                .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" ) );
                });
        },