2011-05-24 28 views
6

我有一個check_move自定義功能:?.bind(「move_node.jstree」,... - > data.rslt.obj不確定如何獲得節點數據

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。

回答

10

在詢問有關它(典型)後,我很快找到了自己問題的答案。

必須使用data.rslt.o.attr(「id」)而不是-.obj.-如果你問我,會出現奇怪的不一致。

我會刪除這篇文章,但我認爲這可能是一個相當普遍的問題。如果有人認爲不然,請隨時刪除。

2
if(!p) 
    return false; 
if(m.cr===-1) 
    return false; 

return true; 

下一次嘗試做這樣的:

return (p && m.cr !== -1);