.bind(“move_node.jstree”,.. - > data.rslt.obj undefined。如何获取节点数据?

时间:2011-05-24 12:51:41

标签: jstree

我有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,不要只复制粘贴。

2 个答案:

答案 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);