]> source.dussan.org Git - jquery-ui.git/commitdiff
Menu: Implemented destroy method and disabled option, modified test to pass html...
authorjzaefferer <joern.zaefferer@gmail.com>
Fri, 18 Jun 2010 08:57:20 +0000 (10:57 +0200)
committerjzaefferer <joern.zaefferer@gmail.com>
Fri, 18 Jun 2010 08:57:20 +0000 (10:57 +0200)
tests/unit/menu/menu.html
tests/visual/menu/menu.html
ui/jquery.ui.menu.js

index 14a5d06dbc15bcdfda7e4b1a8ee4d64a8f3c3699..b477286410fa19f8547702bb96877d1045d66b0b 100644 (file)
 
 <div id="main" class="mainOnMoon">
 
-<ul id="menu1">
-       <li><a href="#">Aberdeen</a></li>
-       <li><a href="#">Ada</a></li>
-       <li><a href="#">Adamsville</a></li>
-       <li><a href="#">Addyston</a></li>
-       <li><a href="#">Adelphi</a></li>
+<ul class="foo" id="menu1">
+       <li class="foo"><a class="foo" href="#">Aberdeen</a></li>
+       <li class="foo"><a class="foo" href="#">Ada</a></li>
+       <li class="foo"><a class="foo" href="#">Adamsville</a></li>
+       <li class="foo"><a class="foo" href="#">Addyston</a></li>
+       <li class="foo"><a class="foo" href="#">Adelphi</a></li>
 </ul>
 <div id="log"></div>
 
index 2380e5a29e1fd6ff04fa315be1bcf488e3e5e5bc..6388b10537369091c73a22df38d1ff4ae8bce4f2 100644 (file)
                        top: 10
                }).appendTo(document.body).themeswitcher();
                
-               $("#menu1, #menu2").menu({
-                       select: function(event, ui) {
-                               $("<div/>").text("Selected: " + ui.item.text()).appendTo("#log");
-                       }
-               });
+               function create() {
+                       menus.menu({
+                               select: function(event, ui) {
+                                       $("<div/>").text("Selected: " + ui.item.text()).appendTo("#log");
+                               }
+                       });
+               }
+               
+               var menus = $("#menu1, #menu2");
+               create();
 
+               $("#toggle-destroy").toggle(function() {
+                       menus.menu("destroy");
+               }, create);
+               $("#toggle-disable").toggle(function() {
+                       menus.menu("disable");
+               }, function() {
+                       menus.menu("enable");
+               });
        });
        </script>
        <style>
        <div id="log" style="height: 400px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
 </div>
 
+<button id="toggle-disable">Disable / Enable</button>
+<button id="toggle-destroy">Destroy / Create</button>
+
 </body>
 </html>
index 895a6a8062c53e93db5ca19b2aa988b13c9a916a..e761549e1407e3757700f59223f33cc42bd7d14f 100644 (file)
@@ -23,6 +23,9 @@ $.widget("ui.menu", {
                                "aria-activedescendant": "ui-active-menuitem"
                        })
                        .click(function( event ) {
+                               if (self.options.disabled) {
+                                       return false;
+                               }
                                if ( !$( event.target ).closest( ".ui-menu-item a" ).length ) {
                                        return;
                                }
@@ -36,6 +39,9 @@ $.widget("ui.menu", {
                        this.options.input = this.element.attr("tabindex", 0);
                }
                this.options.input.bind("keydown.menu", function(event) {
+                       if (self.options.disabled) {
+                               return;
+                       }
                        switch (event.keyCode) {
                        case $.ui.keyCode.PAGE_UP:
                                self.previousPage();
@@ -67,8 +73,21 @@ $.widget("ui.menu", {
        },
        
        destroy: function() {
-               // TODO implement destroy
-               $.Widget.prototype.apply(this, arguments);
+               $.Widget.prototype.destroy.apply(this, arguments);
+               
+               this.element
+                       .removeClass("ui-menu ui-widget ui-widget-content ui-corner-all")
+                       .removeAttr("tabindex")
+                       .removeAttr("role")
+                       .removeAttr("aria-activedescendant");
+               
+               this.element.children(".ui-menu-item")
+                       .removeClass("ui-menu-item")
+                       .removeAttr("role")
+                       .children("a")
+                       .removeClass("ui-corner-all")
+                       .removeAttr("tabindex")
+                       .unbind(".menu");
        },
        
        refresh: function() {
@@ -83,10 +102,16 @@ $.widget("ui.menu", {
                        .addClass("ui-corner-all")
                        .attr("tabindex", -1)
                        // mouseenter doesn't work with event delegation
-                       .mouseenter(function( event ) {
+                       .bind("mouseenter.menu", function( event ) {
+                               if (self.options.disabled) {
+                                       return;
+                               }
                                self.activate( event, $(this).parent() );
                        })
-                       .mouseleave(function() {
+                       .bind("mouseleave.menu", function() {
+                               if (self.options.disabled) {
+                                       return;
+                               }
                                self.deactivate();
                        });
        },