`

简单的js树-rTree,可负载25万个节点(非ajax),代码少,易用易懂。更新checkbox补丁代码(在7楼)

阅读更多
这是我写的第一个js的控件,修修改改快大半年了,公司的老项目里在用。
废话不多说,直接说特点吧!
r.setNodedbc(true);根(有子节点)是否可以双击打开关闭。
r.setNodehref(false);根(有子节点)是否可以触发事件。
r.setLazy(false);是否延迟生成树。
r.canAlterbg(true);点击节点后改变背景色。这是用jquery做得补丁式的功能。
8个参数 id,父id,显示字符,关闭时图片路径,打开时图片路径,href的路劲/调的js方法,目标,是否关闭(lazy=true时无效)。
我觉得最大的特色就是lazy,我写的时候发现,树慢就慢在构造上,加载数据到不慢,所以lazy就是数据一次性加进去,但一次只生成一层。如果要打开好几层的话,可以自己调openNode()方法。
像大家说的checkbox等功能,我做过例子,是通过jquery后期再添加进去的,觉得jquery打补丁真的不错。
号称的250000条数据,是在全部都是随机节点的情况下,不死机的状况。就是一层的节点不能过大。。不然也会死。
代码很少200行,注释70行,大家如果用得上的话,我就最开心不过了!!!
下面是构造的代码,同dtree,有啥意见多提提,我好再改进,谢谢啦!!!

!!!!!!如果用js方法的话 参数要用&quot包起来。如 javascript:afun("xxx");!!!!!!!!!!!!

全部打开按钮,只适用于不使用lazy的情况

var r=new rTree("r");
r.setNodedbc(true);//双击开关节点
r.setNodehref(false);//根是否能绑事件 
r.setLazy(false);//延时构造树 要加入1000条以上节点时,请设为true
r.canAlterbg(true);//点击节点后,改变节点背景色
r.add(1,0,"a哈罗",'images/folderclose.gif','images/imgfolder.gif','javascript:alert("我们都是哈罗!!!")');
r.add(2,1,"男哈罗",'images/hello1.gif','',"./baidu.mht");
r.add(3,1,"b哈罗",'','images/hello1.gif');
r.add(4,1,"c哈罗");
r.add(5,1,"d哈罗");
r.add(6,2,"e女哈罗",'','',"images/hello1.jpg","show");
r.add(7,2,"f哈罗");
r.add(8,3,"g哈罗");
r.add(9,3,"h哈罗","","","","",true);
r.add(10,3,"i哈罗");
for(var i=11;i<11;i++){//设置随机的节点,10000的话还是很快的。。刷的一下就出来
	r.add(i,parseInt(Math.random()*i),"测试"+i);
}
//r.useBgImg("images/green.jpg");
r.startTree();

分享到:
评论
48 楼 banrui 2009-09-08  
不错,感觉跟dTree有点象
47 楼 qipei 2009-09-08  
东西不错
建议楼主可以在Google上建个项目,开源 定期维护,慢慢把它做的更完善,这样用的人才会越来越多。
我之前项目中的树是用dhtmlxTree,这个还是很好用的,不过对商业项目收费,后面用YUI感觉还行,只是自己要实现的东西就更多一些(比较懒。。。呵呵)
46 楼 rowanh 2009-09-06  
xiaoxie2007 写道
不错!有右键菜单功能吗?如果没有那加上就更完美了






右键 增删改节点做是做过,不过考虑到节点的数据,根据需求可能有很多列,还是专门做个页面比较好,后来就停留在不牵涉后台的阶段,没继续做下去。
当时做的是相当粗糙啊。。。
45 楼 jiazhigang 2009-09-06  
创建的对象越少速度就越快
44 楼 xiaoxie2007 2009-09-06  
不错!有右键菜单功能吗?如果没有那加上就更完美了
43 楼 xiaoxie2007 2009-09-06  
有右键菜单吗?如果没有,最好添上就更好了
42 楼 trap 2009-09-06  
很方便实用代码又简洁的树,复杂点的需求加上JQuery补充也能很容易实现。已经把公司项目中的树都换了一遍,感谢楼主
41 楼 qiushyfm 2009-09-06  
一直在找一个这样的东西。
终于找到好的了。物有所值!
顶楼主。
40 楼 slieer 2009-09-06  
你也把你们自己的代码托管到期google的svn上去,就更好了。
39 楼 rowanh 2009-09-05  
ext的tree的确很强大。但这是在确实要用到他的高级功能的情况下。使用上肯定是比我这个繁琐的。
如果只是基本应用的话,我用我自己的树,比他方便。
38 楼 jamix 2009-09-05  
谢谢楼主分享
37 楼 kaki 2009-09-05  
Ext 很好用而且很系统,没有必要重复制造轮子。
36 楼 曾经de迷茫 2009-09-04  
一直用ext的树.下次项目试试楼主这个,`呵呵,支持原创``!
35 楼 rowanh 2009-09-04  
不好意思,是有点标题了。抱歉...抱歉....
前面自己再用火狐测了下,不用lazy,1000个节点默认初始全部打开,有明显卡的感觉。
所以一开始还是不要全部打开的好啊。
34 楼 fantasybei 2009-09-04  
- -! 原来lz是标题党,我以为250k节点都展开呢,全部展开300个就不行了.... - -!
33 楼 rowanh 2009-09-04  
说来惭愧。。。第一次用的是dtree,后来自己写了树后,就抱着自给自足的小农心态,没看过别的树。
前面特意去看了下梅花雪树,功能很多,浏览器兼容代码完善。
如果碰到特殊需求要改代码的话,改梅花雪树花的精力大,功能虽多,但不定用的上。
他的缺点就是我的优点。

说道速度,没具体测过,只能说在不开启lazy的情况下和dtree差不多。开启后比dtree快(dtree是整棵树拼接好后,一起write的)。
32 楼 thevone 2009-09-04  
问个问题吧。。 你这树和梅花雪树比。 哪个速度快??
你觉得各有什么优点?
31 楼 mycybyb 2009-09-04  
呵呵,我开始以为你的树就是只渲染用户看得见的部分呢。要不怎么负载25万个节点。
30 楼 rowanh 2009-09-04  
感谢您的建议啊,我的延迟加载也是有个局限性的。
对于分支特别多,但每个分支的子节点都很少的情况下,速度还是很快的。
用随机数,出来的就是这种效果。
前面看了易度的edojs,觉得那个table很好啊,看有人的回帖说,只渲染用户看的见的部分,要是树也能这样做的话,就好了。
29 楼 习惯在马桶上思考 2009-09-04  
在IE下测试一下,感觉还行...JQUERY 之前项目做延迟加载的时候我也用过,还做了小小的改动. JQUERY 的树插件的确不错....不过如果说要做到通用的话,最好再扩展一下...

相关推荐

Global site tag (gtag.js) - Google Analytics