阅读更多

37顶
1踩

Web前端

原创新闻 JQuery Tree插件——zTree v3.0 beta 发布

2011-09-09 11:29 by 正式记者 zTreeAPI 评论(91) 有25165人浏览
      终于可以将 zTree v3.0 beta 发布出来了,在这里首先感谢大家对 zTree 的支持。

    这次 zTree v3.0 改动相当的大,包括 js 的代码架构、 css 调整;当然还有采用了延迟加载技术后,对性能的优化。赶快去下载吧:http://code.google.com/p/jquerytree/downloads/list

    顺便网站也进行了全面改版:http://www.baby666.cn
   


    当然这次 v3.0 的升级还是有一个比较大的遗憾,就是为了性能、结构等性能的提升,此次升级无法做到向下兼容。但我专门制作了 v2.6 - v3.0 的升级必读,请升级的朋友仔细阅读:http://www.baby666.cn/v3/faq.php#_101

    zTree v3.0 API 文档暂时也只提供在线版本的:http://www.baby666.cn/v3/api.php

   这次升级修改的内容太多了,这里不一一描述,需要的朋友可以去看升级必读,下面简要介绍一下 v3.0 改进的关键部分:

   * 【修改】zTree 的 js 代码架构全面修改,并且拆分

   * 【修改】zTree 的 css 样式全面修改,对浏览器可以更好地兼容,同时解决了以前1个像素差的问题

   * 【优化】采用延迟加载技术,一次性加载大数据量的节点性能飞速提升

   * 【增加】支持多节点同时选中、拖拽

   * 【增加】checkNode、checkAllNodes 等多种方法

   * 【增加】IE6 自动取消动画展开、折叠的功能

   * 【修正】异步加载 & 编辑模式 能够更完美的共存

   * 【修正】setting 配置更加合理,并且增加了若干项配置参数

   * 【修正】treeNode 节点数据的属性更加合理,并且增加了一些方法

   * 【修正】拖拽操作更加灵活方便,更容易制定自己的规则


37
1
评论 共 91 条 请登录后发表评论
71 楼 tianxiawuren 2011-10-17 11:02
请问一下,怎么得到某个节点下面所有的节点?(包括所有的子节点及子子节点...)
70 楼 zTreeAPI 2011-10-12 10:09
tianxiawuren 写道
同级节点不能存在两个或多个一样的节点名称,怎么判断?

自己for循环,或者 利用 getNodesByParam方法搜索一遍,看你自己怎么用起来方便了。
69 楼 tianxiawuren 2011-10-12 09:45
同级节点不能存在两个或多个一样的节点名称,怎么判断?
67 楼 tianxiawuren 2011-09-30 13:11
http://www.iteye.com/topic/1116095
66 楼 zTreeAPI 2011-09-30 09:39
yu505656166 写道
楼主啊 各种求帮我去百度吧 把哪个树节点的问题解决了嘛 [color=orange][/color]

呵呵,没看我在这里发的帖子呀,现在非常忙,不可能很及时的回答问题。
65 楼 yu505656166 2011-09-29 11:08
楼主啊 各种求帮我去百度吧 把哪个树节点的问题解决了嘛 [color=orange][/color]
64 楼 tianxiawuren 2011-09-19 18:26
[object Object],[object Object]---这种形式怎么解析?都不懂什么意思。。。这是两个数组对吧?每个数组里的前面那个object代表什么意思?怎么得到它?后面那个Object代表什么意思?怎么得到它?
63 楼 zTreeAPI 2011-09-19 18:02
tianxiawuren 写道
transformToArray()这个方法转换成这样了---[object Object],[object Object],可还是不能变成[{id:'1',pId:'2',name='add1'...},{id:'2',pId:'1',name='add2'...}]
这个样子?

我晕, {..} 这就是一个 Object, 你是不是想还原成 json格式的字符串呀,那就自己去拼接或者找一些工具包
62 楼 tianxiawuren 2011-09-19 17:37
transformToArray()这个方法转换成这样了---[object Object],[object Object],可还是不能变成[{id:'1',pId:'2',name='add1'...},{id:'2',pId:'1',name='add2'...}]
这个样子?
61 楼 tianxiawuren 2011-09-19 17:26
zTreeAPI 写道
tianxiawuren 写道
高人,现在我后台从数据库查询节点数据并显示在前台,前台增加节点保存到数据库,修改节点保存到数据库都已经可以了,可是删除节点的时候,var nodes = zTree.getSelectedNodes();这个nodes为什么是"[object Object]"?因为我设置了data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId"
}
},
这个的原因吗?怎么让var nodes = zTree.getSelectedNodes();变成"[{...},{...}]"这种格式呢?

看API 中,transformToArray 方法

这个方法好像没用啊。。。
60 楼 zTreeAPI 2011-09-19 17:14
tianxiawuren 写道
高人,现在我后台从数据库查询节点数据并显示在前台,前台增加节点保存到数据库,修改节点保存到数据库都已经可以了,可是删除节点的时候,var nodes = zTree.getSelectedNodes();这个nodes为什么是"[object Object]"?因为我设置了data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId"
}
},
这个的原因吗?怎么让var nodes = zTree.getSelectedNodes();变成"[{...},{...}]"这种格式呢?

看API 中,transformToArray 方法
59 楼 tianxiawuren 2011-09-19 15:05
高人,现在我后台从数据库查询节点数据并显示在前台,前台增加节点保存到数据库,修改节点保存到数据库都已经可以了,可是删除节点的时候,var nodes = zTree.getSelectedNodes();这个nodes为什么是"[object Object]"?因为我设置了data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId"
}
},
这个的原因吗?怎么让var nodes = zTree.getSelectedNodes();变成"[{...},{...}]"这种格式呢?
58 楼 zTreeAPI 2011-09-17 21:27
tianxiawuren 写道
var setting = {
check: {
enable: true, //是否显示复选框(true:显示,false:不显示)
chkboxType: { "Y": "ps", "N": "ps" }
},
view: {
showIcon: false,
dblClickExpand: false
},
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId"
}
},
async: {
enable: true,
type: "post",
url:"catalogue!getTree.action"
},
callback: {
onRightClick: OnRightClick
}
};

var addCount = 1;
//添加节点
function addTreeNode() {
hideRMenu();
zTree.addNodes(zTree.getSelectedNodes()[0], [{ name:"增加" + (addCount++)}]);
}

为什么我点击添加节点方法时,节点第一次没有添加上去,点击第二次的时候,他把根节点一起添加上去了?


答:异步加载 与 编辑模式 共存时,对于未加载子节点的父节点进行添加子节点操作时,会先去异步加载其子节点后,再添加子节点。 估计你的问题就是出现在这里,后台重新生成子节点数据时,没有考虑到其父节点已经不是 zTree 的根,你需要配置 autoParam 或者 otherParam 参数,让后台每次生成数据时,知道当前是给哪个父节点生成子节点,从而生成不同的数据即可。
57 楼 zTreeAPI 2011-09-17 21:22
tianxiawuren 写道
function callBack(){
//判断是否是完成状态
if(xmlHttp.readyState==4){
  //判断是否执行成功
  if(xmlHttp.status==200){
  var resXML = xmlHttp.responseText;
  var zNodes = eval(resXML);
 
  var setting = {
  check: {
enable: true //是否显示复选框(true:显示,false:不显示)
},
view: {
showIcon: false,
dblClickExpand: false
}
};

$(document).ready(function(){
    zTree = $("#treeDemo").zTree(setting, zNodes);
    });
  }
}
}
这段代码:$(document).ready(function(){
    zTree = $("#treeDemo").zTree(setting, zNodes);
    });
为什么有问题?应该怎么设置?


最大的问题貌似是 var zNodes = eval(resXML); 请你监控一下是否能够得到正常的 节点数据;

请你测试一下   eval("{'a':1, 'b':2}");  和 eval("({'a':1, 'b':2})"); 的区别
56 楼 tianxiawuren 2011-09-17 17:08
var setting = {
check: {
enable: true, //是否显示复选框(true:显示,false:不显示)
chkboxType: { "Y": "ps", "N": "ps" }
},
view: {
showIcon: false,
dblClickExpand: false
},
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId"
}
},
async: {
enable: true,
type: "post",
url:"catalogue!getTree.action"
},
callback: {
onRightClick: OnRightClick
}
};

var addCount = 1;
//添加节点
function addTreeNode() {
hideRMenu();
zTree.addNodes(zTree.getSelectedNodes()[0], [{ name:"增加" + (addCount++)}]);
}

为什么我点击添加节点方法时,节点第一次没有添加上去,点击第二次的时候,他把根节点一起添加上去了?
55 楼 tianxiawuren 2011-09-17 16:13
function callBack(){
//判断是否是完成状态
if(xmlHttp.readyState==4){
  //判断是否执行成功
  if(xmlHttp.status==200){
  var resXML = xmlHttp.responseText;
  var zNodes = eval(resXML);
 
  var setting = {
  check: {
enable: true //是否显示复选框(true:显示,false:不显示)
},
view: {
showIcon: false,
dblClickExpand: false
}
};

$(document).ready(function(){
    zTree = $("#treeDemo").zTree(setting, zNodes);
    });
  }
}
}
这段代码:$(document).ready(function(){
    zTree = $("#treeDemo").zTree(setting, zNodes);
    });
为什么有问题?应该怎么设置?
54 楼 zTreeAPI 2011-09-17 13:04
tianxiawuren 写道
高手,现在主要是为了完成项目,所以还请你帮忙用JQUERY写一个将树节点JSON或Array(JSON)转换成String的方法,如果你也懂JAVA的话,请帮忙用JAVA写一个将String转换成Array或者List的方法,多谢了。。。

不好意思,真没这么多时间呀。还望你多加努力!
53 楼 tianxiawuren 2011-09-17 09:53
高手,现在主要是为了完成项目,所以还请你帮忙用JQUERY写一个将树节点JSON或Array(JSON)转换成String的方法,如果你也懂JAVA的话,请帮忙用JAVA写一个将String转换成Array或者List的方法,多谢了。。。
52 楼 zTreeAPI 2011-09-16 17:31
tianxiawuren 写道
...太长,我给省略了...

1、写代码如果是为了应付差事,那么不需要做太多检查,能正常运行即可,也完全不用考虑性能
2、如果想认真写代码,那么需要自己多琢磨,不是随便写段代码扔给别人求指点
3、程序是否正常运行,自己测试一下就可以得知,如果连自己都不知道自己的代码运行是否正常,那么是有问题的。
4、对于for循环中如果 设置了 flag = true 的时候,是可以break 跳出循环的,这个会提高性能,避免多余的循环。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

Global site tag (gtag.js) - Google Analytics