一个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!!!");
});
答案 0 :(得分: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
答案 1 :(得分:0)
你的第一个代码示例因为
而无法运行"action": function (obj) { this.rename(obj); }
在这种情况下" 这个"是一个指向Window对象的东西,接下来就是文档http://www.jstree.com/api/没有提到方法重命名而只有 rename_node
以下是工作示例(右键单击任何节点,然后单击重命名)
http://jsfiddle.net/w9snc6z1/4/
注意 rename_node 也无效,但根据documentation
set_text:设置节点的文本值。在内部使用,请使用rename_node(obj,val)。
不建议使用set_text而不是rename_node。
答案 2 :(得分:0)
您应该使用var tree = $("#marketing-category-tree").jstree(true);
获取树的节点,然后对节点进行操作。
u可以使用此example 祝好运 :)