我有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,不要只复制粘贴。
答案 0 :(得分:10)
在询问之后很快就找到了我自己问题的答案(典型)。
一个人必须使用data.rslt.o.attr(“id”)而不是-.obj.-如果你问我一个奇怪的不一致。
我会删除这篇文章,但我认为这可能是一个非常常见的问题。如果有人不这么认为,请随意删除。
答案 1 :(得分:2)
if(!p)
return false;
if(m.cr===-1)
return false;
return true;
下次尝试这样做:
return (p && m.cr !== -1);