Javascript jstree delete_node()未删除
我一直在拼凑一个函数,为不同的节点拼凑一个自定义上下文菜单。好吧,到目前为止,在点击文件夹或文件时显示不同的标签是很好的,但在实际删除文件夹或文件时却不是很好 看一看。我不得不。。。因为我无法让node.hasClass('jstree-open')yada-yada正常工作,所以需要做一点简单的变通,但这通常是为了完成删除操作Javascript jstree delete_node()未删除,javascript,jquery,jstree,Javascript,Jquery,Jstree,我一直在拼凑一个函数,为不同的节点拼凑一个自定义上下文菜单。好吧,到目前为止,在点击文件夹或文件时显示不同的标签是很好的,但在实际删除文件夹或文件时却不是很好 看一看。我不得不。。。因为我无法让node.hasClass('jstree-open')yada-yada正常工作,所以需要做一点简单的变通,但这通常是为了完成删除操作 function customMenu(node) { //Show a different label for renaming files
function customMenu(node) {
//Show a different label for renaming files and folders
var ID = $(node).attr('id');
if (ID == "j1_1") {
return items = {}; //no context menu for the root
}
var $mynode = $('#' + ID);
var renameLabel;
var deleteLabel;
var folder = false;
if ($mynode.hasClass("jstree-closed") || $mynode.hasClass("jstree-open")) { //If node is a folder
renameLabel = "Rename Folder";
deleteLabel = "Delete Folder";
folder = true;
}
else {
renameLabel = "Rename File";
deleteLabel = "Delete File";
}
var items = {
"rename" : {
"label" : renameLabel,
"action": function (obj) {
//nothing here yet.
}
},
"delete" : {
"label" : deleteLabel,
"action": function (obj) {
//tree.delete_node($(node));
//this.remove(obj);
//$('#treeView').jstree('remove', $(node));
//nothing is working.
}
}
};
return items;
}
为了方便您,我准备了一把小提琴:
我不认为真的需要说我在jQuery或处理第三方API方面不是很有经验,所以。。。温柔点 我向上帝发誓,没有什么比在StackOverflow上发布问题更能促使我更快地解决问题了 固定的:
"delete": {
"label": deleteLabel,
"action": function (obj) {
//tree.delete_node($(node));
tree.delete_node($mynode); //<<--works.
}
“删除”:{
“标签”:删除标签,
“行动”:功能(obj){
//删除_节点($(节点));
tree.delete_节点($mynode);//请使用tree.delete_节点([node]);
进行删除
编辑:
您执行的代码与节点
相同
var ID = $(node).attr('id');
var $mynode = $('#' + ID);
它是同一个对象节点。我遇到了这个问题,但没有一个解决方案有效。正如文档所述:
阻止对树的所有修改(创建、重命名、移动、删除)。若要启用这些修改,请将core.check\u callback设置为true
在我的例子中,我有一个check_回调函数(我使用拖放),在删除节点时返回false
我已将其调整为“删除节点”,如下所示:
check_callback: function(operation, node, parent, position){
if(operation == 'delete_node'){
return true;
}
// ... rest of the code
}
除非core,否则无法删除节点。check_callback
设置为true
使用JSTree可以获得很多乐趣。我使用AJAX加载所需的节点。我发现最简单的删除方法是调用AJAX删除服务器上的节点,然后使用回调刷新JSTree中的父节点如果删除成功。这确保了我的树和服务器上的原始数据之间的同步。先生,@HoboSapiens非常方便。因此,这个jstree也使用AJAX动态加载其数据;如果用户确认删除,我正计划进行AJAX调用以删除服务器上的文件/文件夹,然后删除服务器上的节点前端,但这个解决方案听起来没有我想象的那么糟糕!!嘿。@takiMartillo,如果它对你有帮助,请进行投票。@Janty我不知道这个网站的具体情况,但这是一个相当普遍接受的概念,你不会乞求人们进行投票。你是对的:)…@takiMartillo那是什么[node]
您正在使用的业务?我以前从未见过。它与我使用的$mynode
变量有何不同?您正在使用上下文菜单进行删除,因此它是作为要删除的当前节点传递给上下文参数的节点。啊,我知道您在那里做了什么。我不太熟悉这个插件的精确语法。它的API是not…在大多数情况下信息量很大,很难理解。是的,我找到了那个人,我的解决方案也很有效。我试图让你解释清楚你在那里做了什么。你为$mynode设置了什么?我的意思是它的值吗?请参阅我的编辑回答。你正在查找id和它的对象。这两行就像只传递了node一样。嗯,我这样做是因为当我刚刚说$(node).hasClass(…)…时,它不起作用。也许我可以用[node]来代替。我会尝试一下,谢谢!