jstree1.0版异步树中绑定loaded事件,让树全部展开。
.bind("loaded.jstree", function (event, data) {  
  $("#aaa").jstree("open_all"); 
  alert("TREE IS LOADED");  
  //在此处写了勾选复选框的代码
})   在alert("TREE IS LOADED");  后,从数据库中读取了对应的节点ID,用以勾选树节点。但现在的问题是loaded.jstree事件好像每次都是在载入第一层节点后就会弹出TREE IS LOADED,这样的话没办法去复选子节点了。  请问各位有没有办法可以判断出是所有的异步节点都已载入完成呢?  不知有没有说清楚,分不够再加。

解决方案 »

  1.   

    如果你用的是json数据的话里面不是有个opened的属性吗?你后台传过来的时候什么都不用做啊.
    --------------------------------------签名分割线-------------------------------------------------
      

  2.   

    你在后台将整个json值都传向前台。不是一样也是取出来在前台处理吗?
    --------------------------------------签名分割线-------------------------------------------------
      

  3.   

    $(function () {
        $("#demo2").jstree({
            "json_data" : {
                "ajax" : {
                        "url" : "_json_data.json",
                    "data" : function (n) {
                        return { id : n.attr ? n.attr("id") : 0 };
                    }
                }
            },
            "plugins" : [ "themes", "json_data" ]
        });
    }); 这样的代码我觉得挺好啊,
    再说了,如果量大的话,你要一次取出来所有的子节点?
    应该是展开的时候ajax请求读取子节点这样吧?
    --------------------------------------签名分割线-------------------------------------------------
      

  4.   

    谢楼上,已解决了,其实想在前台赋值而不是后台主要考虑了两点
    1、虽然树节点的量并不是太大,但每次需要牵扯几个表做循环感觉比较麻烦而且效率不高。
    2、就是树节点的读取程序是公用的,在几个不同的页面中表现形式不同,所以想着还是在前台做一些工作比较好。我试了在异步情况下用loaded.jstree时好像每次只载入第一层节点时就被触发了,而我想要的是全部节点都载入完成后触发。最后用了ajaxStop,解决问题。
      

  5.   

    [email protected]...谢谢了。。