gpt4 book ai didi

jquery - jstree contextmenu 创建文件/文件夹功能

转载 作者:行者123 更新时间:2023-12-03 23:00:57 24 4
gpt4 key购买 nike

我试图让用户创建文件或文件夹。因此,当他们右键单击菜单时,上下文菜单将显示:创建=>文件文件夹

这部分工作正常,问题在于附加到每个上下文菜单的功能。此时单击"file"或“文件夹”会调用:this.create(obj);如何指定类型?我试过obj.attr("rel","type","folder") ,我试过obj.rslt.rel还有很多其他人,但我只是在黑暗中拍摄,哈哈。我已经阅读了文档,布局很好,但对于解释对象的属性毫无用处。

下面是上下文菜单、类型插件和创建节点绑定(bind)的代码。

    fma_jstree = $("#archive")
.bind("before.jstree", function (e, data) {
$("#alog").append(data.func + "<br />");
})
.jstree({
// List of active plugins
"plugins" : [
"themes","json_data","ui","crrm","cookies","dnd","search","types","hotkeys","contextmenu"
//"themes","json_data","ui","crrm","cookies","dnd","search","types","contextmenu"
],

"contextmenu" : {
items : { // Could be a function that should return an object like this one
"create" : {
"separator_before" : false,
"separator_after" : true,
"label" : "Create",
"action" : false,
"submenu" :{
"create_file" : {
"seperator_before" : false,
"seperator_after" : false,
"label" : "File",
action : function (obj) {
this.create(obj);
}
},
"create_folder" : {
"seperator_before" : false,
"seperator_after" : false,
"label" : "Folder",
action : function (obj) { this.create(obj); }
}
}
}
}
},
// Using types - most of the time this is an overkill
// read the docs carefully to decide whether you need types
"types" : {
// I set both options to -2, as I do not need depth and children count checking
// Those two checks may slow jstree a lot, so use only when needed
"max_depth" : -2,
"max_children" : -2,
// I want only `drive` nodes to be root nodes
// This will prevent moving or creating any other type as a root node
"valid_children" : [ "drive" ],
"types" : {
// The default type
"default" : {
// I want this type to have no children (so only leaf nodes)
// In my case - those are files
"valid_children" : "none",
// If we specify an icon for the default type it WILL OVERRIDE the theme icons
"icon" : {
"image" : icon_url + "/file.png"
}
},
// The `folder` type
"folder" : {
// can have files and other folders inside of it, but NOT `drive` nodes
"valid_children" : [ "default", "folder" ],
"icon" : {
"image" : icon_url + "/folder.png"
}
},
// The `drive` nodes
"drive" : {
// can have files and folders inside, but NOT other `drive` nodes
"valid_children" : [ "default", "folder" ],
"icon" : {
"image" : icon_url + "/root.png"
},
// those prevent the functions with the same name to be used on `drive` nodes
// internally the `before` event is used
"start_drag" : false,
"move_node" : false,
"delete_node" : false,
"remove" : false
}
}
},
.bind("create.jstree", function (e, data) {

//if creating a root node
if(!$(data.rslt.parent).attr("id")) var id = 1;
//else get parent
else var id = data.rslt.parent.attr("id").replace("node_","");
$.post(
ajaxurl,
{
"action" : "fma_create_node",
"operation" : "create_node",
"id" : id,
"position" : data.rslt.position,
"title" : data.rslt.name,
"type" : data.rslt.obj.attr("rel")
},
function (r) {
if(r.status) {
$(data.rslt.obj).attr("id", "node_" + r.id);
}
else {
$.jstree.rollback(data.rlbk);
}
},
'json'
);
})

任何帮助将不胜感激;)问候,戴蒂

最佳答案

解决了;)指定要创建的节点类型的代码是:

this.create(obj, "last", {"attr" : {"rel" : "default"}});

现在 contextmenu 插件的代码如下所示:

        "contextmenu" : {
items : { // Could be a function that should return an object like this one
"create" : {
"separator_before" : false,
"separator_after" : true,
"label" : "Create",
"action" : false,
"submenu" :{
"create_file" : {
"seperator_before" : false,
"seperator_after" : false,
"label" : "File",
action : function (obj) {
this.create(obj, "last", {"attr" : {"rel" : "default"}});
}
},
"create_folder" : {
"seperator_before" : false,
"seperator_after" : false,
"label" : "Folder",
action : function (obj) {
this.create(obj, "last", {"attr" : { "rel" : "folder"}});
}
}
}
}
}
},

对于任何新手 - 如果您查看已发布问题中发布的代码,您应该能够看到它的去向。

关于jquery - jstree contextmenu 创建文件/文件夹功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6727387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com