2011-10-13 5 views
5

Đối với ứng dụng asp.net mvc 3 của tôi, tôi đang sử dụng this plugin. Nhưng tôi có vấn đề, tôi muốn bật hoặc tắt một số mục menu, sau khi tôi đã tạo menu, như:menu ngữ cảnh jquery vô hiệu hóa các mục 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> 

Không hoạt động, có ý tưởng gì không?

Trả lời

12

Theo plugin của documentation, bạn có thể chỉ định một hàm được gọi để xác định xem mục menu có bị vô hiệu hóa hay không.

Vì vậy, bạn có thể có chức năng đó đóng trên biến cục bộ và cập nhật biến đó để bật hoặc tắt các mục. Một cái gì đó như:

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

tuyệt vời, nó hoạt động! – iknowitwasyoufredo

+3

BTW, tôi đã phát hiện ra rằng để ẩn một mục và không chỉ vô hiệu hóa mục đó, bạn có thể sử dụng tùy chọn "hiển thị" thay vì "bị tắt". Định nghĩa được thực hiện theo cùng một cách, ngoại trừ thực tế là hàm dưới "có thể nhìn thấy" chạy hai lần và trong lần chạy đầu tiên, các tham số không được trả về. Vì vậy, bạn sẽ phải kiểm tra đầu tiên nếu "$ kích hoạt" trả về bất cứ điều gì và sau đó chạy mã cần thiết trong chức năng này. – TheCuBeMan

+0

@TheCuBeMan nó có thể đã được tốt đẹp nếu họ đề cập rằng trong tài liệu hướng dẫn! https://swisnl.github.io/jQuery-contextMenu/docs/items.html#visible –