2011-12-13 58 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

同样在这里!谢谢! –

相关问题