jstree delete_node() 没有删除
jstree delete_node() is not deleting
我一直在拼凑一个函数来为不同的节点组合一个自定义上下文菜单。好吧,到目前为止,在点击文件夹或文件时显示不同的标签方面做得很好,但在实际删除它们方面却没那么好。
看看。我不得不...做一些棘手的解决方法,因为我无法让 node.hasClass('jstree-open') yada yada 正常工作,但这通常可以达到预期的效果进行删除
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;
}
为了方便起见,我整理了一个 fiddle:http://jsfiddle.net/dpzy8xjb/
我不认为真的需要说我在 jQuery 或处理第三方 API 方面不是很有经验,所以...请保持温和。
我向上帝发誓,没有什么比在 Whosebug 上发布问题更能让我更快地解决问题了。
固定:
"delete": {
"label": deleteLabel,
"action": function (obj) {
//tree.delete_node($(node));
tree.delete_node($mynode); //<<--works.
}
请使用 tree.delete_node([node]);
进行删除。
编辑:
您所做的代码与node
相同。
var ID = $(node).attr('id');
var $mynode = $('#' + ID);
同一个对象节点
我遇到了这个问题,none 的解决方案有效。正如文档所说:
all modifications to the tree are prevented (create, rename, move, delete). To enable them set core.check_callback to true.
在我的例子中,我有一个 check_callback 函数(我正在使用拖放),它在删除节点时返回 false
。
我已经将它调整为 'delete_node' 像这样:
check_callback: function(operation, node, parent, position){
if(operation == 'delete_node'){
return true;
}
// ... rest of the code
}
无法删除节点,除非 core.check_callback
设置为 true
。
我一直在拼凑一个函数来为不同的节点组合一个自定义上下文菜单。好吧,到目前为止,在点击文件夹或文件时显示不同的标签方面做得很好,但在实际删除它们方面却没那么好。
看看。我不得不...做一些棘手的解决方法,因为我无法让 node.hasClass('jstree-open') yada yada 正常工作,但这通常可以达到预期的效果进行删除
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;
}
为了方便起见,我整理了一个 fiddle:http://jsfiddle.net/dpzy8xjb/ 我不认为真的需要说我在 jQuery 或处理第三方 API 方面不是很有经验,所以...请保持温和。
我向上帝发誓,没有什么比在 Whosebug 上发布问题更能让我更快地解决问题了。
固定:
"delete": {
"label": deleteLabel,
"action": function (obj) {
//tree.delete_node($(node));
tree.delete_node($mynode); //<<--works.
}
请使用 tree.delete_node([node]);
进行删除。
编辑:
您所做的代码与node
相同。
var ID = $(node).attr('id');
var $mynode = $('#' + ID);
同一个对象节点
我遇到了这个问题,none 的解决方案有效。正如文档所说:
all modifications to the tree are prevented (create, rename, move, delete). To enable them set core.check_callback to true.
在我的例子中,我有一个 check_callback 函数(我正在使用拖放),它在删除节点时返回 false
。
我已经将它调整为 'delete_node' 像这样:
check_callback: function(operation, node, parent, position){
if(operation == 'delete_node'){
return true;
}
// ... rest of the code
}
无法删除节点,除非 core.check_callback
设置为 true
。