我在网页中使用jstree作为树视图。
树可以重命名和移动节点。移动或重命名节点会触发rename_node.jstree和rename_node.jstree事件。
使用新节点(使用rename_node.jstree events
创建),仍然可以重命名和移动节点,但不会触发move_node.jstree和rename_node.jstree事件。
似乎事件只与初始节点绑定。我没有看到任何“实时”方法将事件与之后创建的节点绑定。
有可能这样做吗?
这是一个帮助(我希望)了解我的问题的示例:
$(function(){
$("#nodes").jstree({
"plugins" : [ "themes", "html_data", "dnd", "ui", "crrm" ]
}).bind("move_node.jstree", function (event, data) {
alert('move');
}).bind("rename_node.jstree", function (event, data) {
alert('rename');
}).bind("create_node.jstree", function (event, data) {
alert('create_node');
})
$("#create_button").click(function () {
$("#nodes").jstree("create",null,"last",{data:"name"});
});
});
答案 0 :(得分:5)
我认为命令是create_node
,而不是create
。有关详细信息,请参阅http://www.jstree.com/documentation/core。
仅供参考,您的代码可以更好地编写为:
$(function() {
$("#nodes").jstree({
"plugins": ["themes", "html_data", "dnd", "ui", "crrm"]
}).bind("move_node.jstree rename_node.jstree create_node.jstree", function(event, data) {
var type = event.type;
alert(type);
if (type === 'move_node.jstree') {
//handle move_node.jstree here
} else if (type === 'rename_node.jstree') {
//handle rename_node.jstree here
} else if (type === 'create_node.jstree') {
//handle create_node.jstree here
}
});
$("#create_button").click(function() {
$("#nodes").jstree("create", null, "last", {
data: "name"
});
});
});
我知道这是主观的,但要把它当作值得的东西。
答案 1 :(得分:2)
似乎事件被正确触发了。问题出在逻辑中的某个地方。我必须设置项目的ID才能正确处理。
$("#nodes").jstree("create",null,"last",{data:the_name, attr: {id: the_id}});
抱歉这个错误。