2011-12-13 61 views
17

我有一個JsTree的contextmenu問題,我如何從創建,刪除,重命名的上下文菜單中刪除默認元素?我想提供我自己的元素,但默認元素仍然處於上下文菜單中。jstree從上下文菜單中刪除默認元素

"contextmenu" : { 
        "items" : { 
         "IsimVer" : { 
          "label" : "İsim Değiştir", 
          "action" : function (obj) { this.rename(obj); } 
         }, 
         "Ekle" : { 
          "label" : "Ekle", 
          "action" : function (obj) { this.create(obj); } 
         }, 
         "Sil" : { 
          "label" : "Sil", 
          "action" : function (obj) { this.remove(obj); } 
         } 
} 
+0

將「items」中的元素更改爲新值會出現什麼問題? [鏈接](http://www.jstree.com/documentation/contextmenu)父母一是'鑰匙'和'標籤'將作爲上下文菜單標籤 – Pradeep

回答

15

我前幾天有過這個問題,但還沒有決定是否這是一個錯誤或功能。它可能與插件的加載順序有關。

什麼工作對我來說是從一個函數返回的項目:

"contextmenu" : { 
    "items" : function ($node) { 
     return { 
      "IsimVer" : { 
       "label" : "İsim Değiştir", 
       "action" : function (obj) { this.rename(obj); } 
      }, 
      "Ekle" : { 
       "label" : "Ekle", 
       "action" : function (obj) { this.create(obj); } 
      }, 
      "Sil" : { 
       "label" : "Sil", 
       "action" : function (obj) { this.remove(obj); } 
      } 
     }; 
    } 
} 

經過一番搜索似乎default behaviour is for your menu items to extend the defaults,所以這是一個特點。不幸的是,文檔目前缺乏關於這一點的細節。

+2

看起來相同,但我想你必須這樣做:}, \t \t \t \t創建:假的, \t \t \t \t重命名:假的, \t \t \t \t刪除:假的, \t \t \t \t CCP:虛假的項目對象。 – LostMohican

+0

謝謝你讓我的生活更輕鬆。 – Ashwin

6

只需在項目對象中將值設置爲false即可。例如,要禁用編輯(剪切,複製,粘貼)菜單試試這個:

contextmenu : { 
    items : { 
     "ccp" : false 
    } 
} 
3


設置中共創建重命名刪除這樣的:

plugins : ["themes","json_data","ui","crrm", "hotkeys", "types", "contextmenu"], 
contextmenu : { 
    items : { 
     "IsimVer" : { 
      "label" : "IsimVer", 
      "action" : function (obj) { alert("IsimVer"); } 
     }, 
     "Ekle" : { 
      "label" : "Ekle", 
      "action" : function (obj) { alert("Ekle"); } 
     }, 
     "Sil" : { 
      "label" : "Sil", 
      "action" : function (obj) { alert("tiga"); } 
     }, 
     "ccp" : false, 
     "create" : false, 
     "rename" : false, 
     "remove" : false 
    } 
} 
12

如果您想修改現有項目的標籤或刪除一些項目,可以使用下面的簡單解決方案

"contextmenu": { 
    "items": function(node) { 
      var defaultItems = $.jstree.defaults.contextmenu.items(); 
      defaultItems.create.label = "Ekle"; 
      delete defaultItems.ccp; 
      return defaultItems; 
     } 
    } 

這會將「創建」項目標籤設置爲「Ekle」,並從默認項目中刪除剪貼複製粘貼。

+0

這是我見過的最好的答案。 –

+0

這是唯一一個使用jstree的3.x工作的,謝謝 – Gurnard

+0

同樣在這裏!謝謝! –

相關問題