关于zTree异步加载的时候获取不到节点的值,为什么?
ztree吧
全部回复
仅看楼主
level 4
Brooks886 楼主
我使用的是Struts控制zTree需要的数据,前台使用异步加载,但是为什么获得不到节点的数据呢?
一到节点的时候就提示找不到对象
实在没办法了
请各位大神指点一下
通过了就把ztree的代码贴上来
2012年03月01日 08点03分 1
level 4
Brooks886 楼主
这是zTree控制代码
var setting = {
//参数设置
view: {
expandSpeed: "fast",
showLine: true,
selectedMulti: false,
dblClickExpand: false
},
async: {
enable: true,
dataType: "text",
url:"getDtree.action",
autoParam:["id"]
},
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pid"
}
},
check: {
enable: true,
chkStyle: "checkbox",
chkboxType: { "Y": "", "N": "" }
},
callback: {
onNodeCreated: this.onNodeCreated,
beforeClick: this.beforeClick,
onClick: this.onClick
}
};
var zNodes =[];
2012年03月01日 08点03分 2
level 4
Brooks886 楼主
这是回调的一个方法
function beforeClick(treeId, treeNode) {
if (treeNode.isParent) {
if (treeNode.level === 0) {
var pNode = curMenu;
while (pNode && pNode.level !==0) {
pNode = pNode.getParentNode();
}
if (pNode !== treeNode) {
var a = $("#" + pNode.tId + "_a");
a.removeClass("cur");
zTree_Menu.expandNode(pNode, false);
}
a = $("#" + treeNode.tId + "_a");
a.addClass("cur"); var isOpen = false;
for (var i=0,l=treeNode.children.length; i<l; i++) {
if(treeNode.children[i].open) {
isOpen = true;
break;
}
}
if (isOpen) {
zTree_Menu.expandNode(treeNode, true);
curMenu = treeNode;
} else {
zTree_Menu.expandNode(treeNode.children[0], true);
curMenu = treeNode.children[0];
}
} else {
zTree_Menu.expandNode(treeNode);
}
}
return !node.isParent;
}
2012年03月01日 08点03分 3
level 4
Brooks886 楼主
上面这个方法是为了实现点击第一个菜单就收起另外一个菜单的效果
2012年03月01日 08点03分 4
level 4
Brooks886 楼主
如图
点击 主菜单2 的时候收起 主菜单1,点击另外一个主菜单的时候收起其他已经打开的
那个beforeClick函数就是为了实现这个功能的

2012年03月01日 09点03分 5
level 4
Brooks886 楼主
使用的是JQuery初始化ztree的
$().ready(function(){
$.fn.zTree.init($("#treeDemo"), setting,zNodes);
zTree_Menu = $.fn.zTree.getZTreeObj("treeDemo");
curMenu = zTree_Menu.getNodes()[0].children[0].children[0];
zTree_Menu.selectNode(curMenu);
var a = $("#" + zTree_Menu.getNodes()[0].tId + "_a");
a.addClass("cur");
});
2012年03月01日 09点03分 6
level 4
Brooks886 楼主
现在的结果是 双击的话能出现一个菜单
并不能实现
点击 主菜单2 的时候收起 主菜单1,点击另外一个主菜单的时候收起其他已经打开的
这个功能
打开页面的时候 会报 zTree_Menu.getNodes()[0].children[0].children[0];不是对象
至于curMenu = null, zTree_Menu 这两个变量 我已经在外面定义了,刚才没复制到,所以没发上来,现在补一下
var curMenu = null, zTree_Menu = null;
2012年03月01日 09点03分 7
level 4
Brooks886 楼主
运行的时候报如下错误
2012年03月01日 09点03分 8
level 4
Brooks886 楼主
求各位zTree大神帮忙啊
为什么会报tId的错误,并且不能获得到zTree_Menu.getNodes()[0].children的值
2012年03月01日 09点03分 9
level 4
Brooks886 楼主
怎么没人回啊?
求助贴
2012年03月01日 09点03分 10
level 4
Brooks886 楼主
自己顶
2012年03月01日 09点03分 11
level 4
Brooks886 楼主
自己顶 。。。。。。。。。。。。。。。。。
2012年03月01日 09点03分 12
level 4
Brooks886 楼主
自己顶。。。。。。。。。。。。。。。。。。。。
2012年03月01日 09点03分 13
level 4
Brooks886 楼主
自己顶】】】】】】】】】】】】】】】】】
2012年03月01日 09点03分 14
level 4
Brooks886 楼主
自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶
2012年03月01日 09点03分 15
level 4
Brooks886 楼主
自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶自己顶
2012年03月01日 09点03分 16
level 11
呵呵,对我还是不够关注呀。 [呵呵]
1、赶紧去 iteye 上 “首页”--“Web前端技术热点 ”部分看《些年我们爱犯的弱智错误(菜鸟必看)》 这篇文章,尤其是后面两个关于 异步加载 的问题
2、去 baby666 的官网上,看“常见问题”里面“关于异步加载” 的文章
好好看看,然后思考一下,如果还没想明白,那么再来找我吧!
2012年03月02日 05点03分 17
level 4
Brooks886 楼主
这个问题我换了一个种比较简单的方式解决了
可以使用ztree里面的expandAll()函数来解决
这个函数就是用来控制打开和折叠节点的
2012年03月02日 09点03分 18
level 4
Brooks886 楼主
呵呵 我换了种方式的
改用ztree里面的expandAll()函数来解决
这个函数就是用来控制打开和折叠节点的
2012年03月02日 09点03分 19
1 2 尾页