一个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!!!");
});
我认为您正在寻找的方法是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
您的第一个代码示例将不起作用,因为
"action": function (obj) { this.rename(obj); }
在这种情况下,“ this”是指向Window对象的一个指针,接下来的事情是文档http://www.jstree.com/api/没有提及方法rename,仅提及了[[rename_node
这里是工作示例(右键单击任何节点,然后单击重命名)http://jsfiddle.net/w9snc6z1/4/
请注意,
rename_node
也不起作用,但是根据documentationset_text:设置节点的文本值。内部使用,请使用rename_node(obj,val)。
不建议使用set_text而不是named_node。
var tree = $("#marketing-category-tree").jstree(true);
获取树的节点,然后对节点进行操作。您可以使用此example祝好运:)