首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 4- jstree,如何禁用文件夹的'delete‘操作?

Rails 4- jstree,如何禁用文件夹的'delete‘操作?
EN

Stack Overflow用户
提问于 2015-09-18 07:07:21
回答 1查看 1.2K关注 0票数 1

在rails 4.2.2中,我使用了带有上下文菜单选项的jstree插件。现在,文件和文件夹的所有上下文菜单选项都在显示。如何禁用根文件夹和其他特定文件夹的“删除”选项?

脚本是,

代码语言:javascript
运行
AI代码解释
复制
<script type="text/javascript">
(function() {
var $j = jQuery.noConflict();

$j(document).ready(function() {

  $j("#jstree").jstree({
    "plugins": ["themes", "contextmenu", "dnd"],
    "core" : {
      themes: {"stripes": true},
      check_callback : true,
      animation : 0,
      data : {
        url: '/users/files/treedata.json'
      }
    },
    contextmenu : {
      "items" : function (node) {
        return {
          "view" : {
            label: "View",
            action: function(obj) {
              window.open("/users/files/view/" + node.id);
            }
          },
          "rename" : {
            label: "Rename",
            action: function(obj) {
              $j("#jstree").jstree(true).edit(node)
            }
          },
          "create" : {
            label: "Create New",
            action: function() {
              createNode(node);
            }
          },
          "delete" : {
            label: "Delete",
            action: function() {
              if ( confirm("Really delete " + node.text + "?") ) {
                deleteNode(node);
              }
            },
            separator_before: true
          }
        }
      }
    }
  });

  $j("#jstree").on("move_node.jstree", function(event, data) {
    moveNode(data);
  });

  $j("#jstree").on("rename_node.jstree", function(event, data) {
    renameNode(data);
  });

  $j("#jstree").on("select_node.jstree", function(event, data) {
    displayPath(data.node.id);
  });
});

function moveNode(data) {
  jQuery.ajax({
    type: "GET",
    url: "/users/home/move_node",
    data: {id: data.node.id, parent: data.parent, old_parent: data.old_parent},
    dataType : "script"
  });
}

function renameNode(data) {
  jQuery.ajax({
    type: "GET",
    url: "/users/home/rename_node",
    data: {name: data.text, id: data.node.id, parent: data.node.parent},
    dataType : "script"
  });
}

function createNode(parent) {
  jQuery.ajax({
    type: "GET",
    url: "/users/home/create_node",
    data: {name: "New Folder", parent: parent.id},
    dataType : "script"
  });
}

function deleteNode(node) {
  jQuery.ajax({
    type: "GET",
    url: "/users/home/delete_node",
    data: {id: node.id, parent: node.parent},
    dataType : "script"
  });
}

  function getPath(id) {
   if (id == "#") {
     return "";
    }
    return $j("#jstree").jstree(true).get_path({id: id}, "/");
  }

  function displayPath(nodeId) {
    $j("#path").text("Path: /" + getPath(nodeId));
  }

 })();
</script>

请帮我完成jstree的disable选项。而且在这里,"select_node.jstree"选项不起作用,我如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2015-10-07 18:21:46

contextmenu.items函数中,如果node参数符合您的条件,则返回false

代码语言:javascript
运行
AI代码解释
复制
items : function (node) {
    if (node.parents.length < 2) {
        return false;
    }

这只是一个演示-检查node,看看你还能做些什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32645888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档