我有一个用于 check_move 的自定义功能:
crrm : {
move : {
"check_move" : function (m) {
var p = this._get_parent(m.o);
if(!p)
return false;
if(m.cr===-1)
return false;
return true;
}
}
},
这似乎按预期工作。 然后,我尝试绑定到“move_node”事件来更新我的数据库:
.bind("move_node.jstree",function(event,data){
if(data.rslt.obj.attr("id")==""){
/* I omitted this snippet from this paste - it's really long and it basically does the same thing as below, just gets the node's id in a more complicated way*/
} else {
controller.moveNode(data.rslt.obj.attr("id"),data.inst._get_parent(this).attr("id"),data.rslt.obj.attr("rel"));
}
})
这会导致错误。 data.rslt.obj 未定义。我真的不知道该怎么办,我之前绑定过多个事件,这就是我所做的。
如果 data.rslt.obj 不起作用,如何在 move_node 事件之后获取节点属性等?
哦,controller.moveNode() 是我自己的函数之一,所以如果你想学习 jstree,不要只是复制粘贴。
必须使用 data.rslt.o.attr("id") 而不是 -.obj.- 如果你问我的话,这是一个奇怪的不一致。
if(!p)
return false;
if(m.cr===-1)
return false;
return true;
下次尝试这样做:
return (p && m.cr !== -1);