jstree delete_node()未删除

我一直在拼凑一个函数,为不同的节点组合一个自定义上下文菜单。 好吧,到目前为止,很好地让不同的标签显示文件夹或文件的点击,但实际上没有那么多删除它们。

看一看。 我不得不……做一些hacky解决方法,因为我无法让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; } 

为了您的方便,我整理了一个小提琴: http : //jsfiddle.net/dpzy8xjb/我不认为我真的不需要说我对jQuery没有超级经验或处理第三方API,所以。 .. 要温柔。

请使用tree.delete_node([node]); 删除。

更新小提琴

编辑:

您执行的代码与node相同。

  var ID = $(node).attr('id'); var $mynode = $('#' + ID); 

它是同一个对象节点。

我向上帝发誓,除了在StackOverflow上发布问题之外没有任何东西可以让我更快地找出问题。

固定:

  "delete": { "label": deleteLabel, "action": function (obj) { //tree.delete_node($(node)); tree.delete_node($mynode); //<<--works. }