2

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

JavaScript 运行时错误:对象不支持属性或方法“重命名”

$(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!!!");
});
4

3 回答 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
              }
            }
  }
...

高温高压

于 2014-09-15T13:56:30.447 回答
0

您的第一个代码示例无法正常工作,因为

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

在这种情况下,“ this ”指向 Window 对象接下来的事情是文档http://www.jstree.com/api/没有提到方法重命名,只有rename_node

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

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

请注意rename_node也不起作用,但根据文档

set_text:设置节点的文本值。内部使用,请使用 rename_node(obj, val)。

不建议使用 set_text 代替 rename_node。

于 2014-09-17T13:35:51.297 回答
0

你应该得到树的节点, var tree = $("#marketing-category-tree").jstree(true);然后对节点进行操作。

你可以用这个例子祝你 好运:)

于 2020-02-04T07:52:13.910 回答