2011-10-13 35 views
5

Per la mia applicazione asp.net mvc 3 sto utilizzando this plugin. Ma ho un problema, voglio abilitare o disabilitare alcune voci di menu, dopo aver creato il menu, come:menu di scelta rapida jquery disattiva voci di 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> 

Non funziona, qualche idea?

risposta

12

In base al plug-in documentation, è possibile specificare una funzione da chiamare per determinare se una voce di menu è disabilitata o meno.

Quindi, è possibile chiudere la funzione su una variabile locale e aggiornare tale variabile per abilitare o disabilitare gli elementi. Qualcosa di simile:

$(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

eccellente, funziona! – iknowitwasyoufredo

+3

BTW, ho scoperto che per nascondere un oggetto e non solo disabilitarlo, puoi usare l'opzione "visibile" invece di "disabilitato". La definizione è fatta allo stesso modo, fatta eccezione per il fatto che la funzione in "visibile" viene eseguita due volte e nella prima esecuzione i parametri non vengono restituiti. Quindi dovrai prima controllare se il "$ trigger" restituisce qualcosa e quindi eseguire il codice necessario in questa funzione. – TheCuBeMan

+0

@ TheCuBeMan sarebbe stato bello se lo menzionassero nella documentazione! https://swisnl.github.io/jQuery-contextMenu/docs/items.html#visible –

Problemi correlati