【问题标题】:How to turn ON the jsTree contextmenu only for the nodes that are beyond level 2?如何仅为超过 2 级的节点打开 jsTree 上下文菜单?
【发布时间】:2016-10-05 14:46:31
【问题描述】:

所以我的问题是我只需要在嵌套在第二级或更深的树的节点上使用上下文菜单。例如:

我想在节点“1.1.1”、“1.1.1.1”等上使用默认上下文菜单...但是我不希望在我右键单击“1”或“ 1.1"。

我应该如何选择出现在哪些节点上,哪些不出现?

我发现了一些像这样的例子:

function customMenu(node) {
   //Show a different label for renaming files and folders
   if ($(node).hasClass("jstree-closed") || $(node).hasClass("jstree-open")) { //If node is a folder
      var renameLabel = "Rename Folder";
   }
   else {
      var renameLabel = "Rename File";
   }
   var items = {
      "upload" : {
          "label" : "Upload File",
          "action" : function () { ... }
      },
      "rename" : {
         "label" : renameLabel,   //Different label (defined above) will be shown depending on node type
         "action" : function () { ... }
      },
      "delete" : {
         "label" : "Delete File",
         "action" : function () { ... }
      }
   };

   //If node is a folder do not show the "delete" menu item
   if ($(node).hasClass("jstree-closed") || $(node).hasClass("jstree-open")) {
      delete items.remove;
   }

   return items;
}

我需要这样的东西,但我不知道如何检查我的文件夹嵌套在哪个级别。我的示例中的检查是针对“文件夹或文件”的。

有人知道吗?

【问题讨论】:

    标签: javascript jquery jstree


    【解决方案1】:

    我不认为 jsTree 有一个开箱即用的方法,所以你可以使用下面的代码来禁止显示级别 1 和 2 的节点的菜单。查看演示 - Fiddle Demo

    .on('show_contextmenu.jstree', function(e, reference, element) {
    
        if ( reference.node.parents.length < 3 ) {
            $('.vakata-context').remove();
        }
    
    });  
    

    【讨论】:

      猜你喜欢
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 2017-09-21
      • 2014-01-29
      • 2012-09-08
      • 1970-01-01
      相关资源
      最近更新 更多