JsTree上下文菜单错误

问题描述 投票:2回答:3

一个JavaScript错误,指示在选择重命名节点时未定义this.rename(obj)。

JavaScript运行时错误:对象不支持属性或方法'rename'

$(document).ready(function () {
        $('#marketing-category-tree').jstree({
            themes: {
                theme: "default",
                dots: true,
                icons: true
            },
            contextmenu: {
                items: {
                    "rename" : {
                        "label": "Rename",
                        "action": function (obj) { this.rename(obj); }
                    }
                }
            },
            plugins: ["themes", "html_data", "ui", "crrm", "contextmenu"]
        })
        .bind("rename.jstree", function (e, data) {
            debugger;
            alert("RENAMING!!!");
        });
});

我也尝试了以下代码,并且能够选择并重命名,但无法捕获更改事件。

$('#marketing-category-tree').jstree({
    themes: {
        theme: "default",
        dots: true,
        icons: true
    },
    plugins: ["themes", "html_data", "ui", "crrm", "contextmenu"]
})
.bind("rename.jstree", function (e, data) {
    alert("RENAMING!!!");
});
javascript contextmenu jstree
3个回答
3
投票

我认为您正在寻找的方法是edit。但是首先,您必须获取树的节点。尝试在下面使用此代码:

...
"contextmenu" : {
  "items" : renameItem : { // The "rename" menu item
              label : "Rename",
              action : function (obj) {
              n = $('#marketing-category-tree').jstree(true).get_node(obj.reference); //get node
              $('#marketing-category-tree').jstree(true).edit(n); //puts the node into edit mode
              }
            }
  }
...

HTH


0
投票

您的第一个代码示例将不起作用,因为

"action": function (obj) { this.rename(obj); }

在这种情况下,“ this”是指向Window对象的一个​​指针,接下来的事情是文档http://www.jstree.com/api/没有提及方法rename,仅提及了[[rename_node

这里是工作示例(右键单击任何节点,然后单击重命名)

http://jsfiddle.net/w9snc6z1/4/

请注意,

rename_node

也不起作用,但是根据documentation
set_text:设置节点的文本值。内部使用,请使用rename_node(obj,val)。

不建议使用set_text而不是named_node。


0
投票
您应该使用var tree = $("#marketing-category-tree").jstree(true);获取树的节点,然后对节点进行操作。

您可以使用此example祝好运:)

© www.soinside.com 2019 - 2024. All rights reserved.