2011-10-13 9 views
5

Dla mojej aplikacji mvc 3 asp.net używam this plugin. Ale mam problem, chcę, aby włączyć lub wyłączyć niektóre elementy menu, po tym jak zostały stworzone menu, jak:Menu kontekstowe jquery wyłącz elementy menu

<script type="text/javascript"> 
    $(function(){ 
     /************************************************** 
     * Menu 1 
     **************************************************/ 
     $.contextMenu({selector: '.context-menu-one', items: { 
      edit: {name: "Edit", icon: "edit", callback: $.noop, accesskey:"e d i t"}, 
      cut: {name: "Cut", icon: "cut", callback: $.noop, accesskey:"c u t"}, 
      copy: {name: "Copy", icon: "copy", callback: $.noop, accesskey:"c o p y"}, 
      paste: {name: "Paste", icon: "paste", callback: $.noop, accesskey:"p a s t e"}, 
      "delete": {name: "Delete", icon: "delete", callback: $.noop, accesskey:"d e l t"}, 
      sep1: "---------", 
      quit: {name: "Quit", icon: "quit", callback: $.noop, accesskey:"q u i t"} 
     }}); 

     //not working 
     $('.context-menu-one').contextMenu('commands[0].disabled','true'); 
     }); 

    </script> 

Nie działa, jakiś pomysł?

Odpowiedz

12

Zgodnie z wtyczką: documentation, można określić funkcję, która ma zostać wywołana, aby określić, czy element menu jest wyłączony, czy nie.

Można więc zamknąć tę funkcję nad zmienną lokalną i zaktualizować tę zmienną w celu włączenia lub wyłączenia elementów. Coś takiego:

$(function() { 
    var itemsDisabled = {}; // Enable everything initially. 
    $.contextMenu({ 
     selector: ".context-menu-one", 
     items: { 
      // [...] 
      cut: { 
       name: "Cut", 
       icon: "cut", 
       callback: $.noop, 
       accesskey: "c u t", 
       disabled: function(key, opt) { 
        return !!itemsDisabled[key]; 
       } 
      } 
      // [...] 
     } 
    }); 

    // Disable the "Cut" menu item. 
    itemsDisabled["cut"] = true; 
}); 
+1

świetnie, działa! – iknowitwasyoufredo

+3

BTW, dowiedziałem się, że aby ukryć element, a nie tylko go wyłączyć, można użyć "widocznej" opcji zamiast "wyłączonej". Definicja jest wykonywana w ten sam sposób, z wyjątkiem faktu, że funkcja pod "widocznym" działa dwa razy iw pierwszym uruchomieniu parametry nie są zwracane. Musisz najpierw sprawdzić, czy "$ trigger" zwraca cokolwiek, a następnie uruchomić potrzebny kod w tej funkcji. – TheCuBeMan

+0

@TheCuBeMan mogłoby być miło, gdyby wspomnieli o tym w dokumentacji! https://swisnl.github.io/jQuery-contextMenu/docs/items.html#visible –

Powiązane problemy