文件名称:带选择的树型js控件
文件大小:59KB
文件格式:RAR
更新时间:2012-11-04 11:27:47
js tree
带选择框的JS树控件 页面创建一个HTMLElement是很耗时的,无论使用createElement或者是是innerHTML都一样。 而且这一步只能一个节点一个节点慢慢地生成,虽然可以通过减小单个节点的HTML元素量的方法提高一些速度,但是对于对于上千个节点来说仍然需要等上几十秒。 (1个节点如果有5个HTMLElement,生成1000个节点大概3秒左右) 所以只有通过异步展示的方法来进一步减少一次生成的节点数。 页面加载时并不立即生成所有节点的HTML元素,而是用户展开多少节点就生成多少节点,节点的生成发生在用户展开这个节点的时候。 这样减少了每次生成的节点数,消除了使用者的等待时间。 而对于节点的检索,这和数据的组织方式有关。 一般的组织方式是使用数组。(解析XML的话太慢,不考虑。只考虑使用json的情况) 但是在数组中检索一个节点的效率实在不敢恭维,如果节点是N个,那么全部节点数据组装起来的效率就是N*N 在节点少的时候不明显,但是如果有1000个节点,那么明显会发觉延迟了10多秒。延迟速度按指数增加。 MzTree(梅花雪)使用了另外一种方式,他没有使用数组而是使用一个简单对象来存放数组。 并且用一个字符串存放节点的索引关系(将所有的节点名(即类的属性名)join()成一个大字符串) 当需要获得子节点的时候使用正则匹配一步获得子节点ID,从而获得子节点。 经过测试发现,使用正则匹配的算法检索节点效率比使用for循环要高出很多。 这个效率已经满足一般大数据jstree的需要。 (具体算法,去参考MzTree梅花雪)
【文件预览】:
otree.css
common.js
china_2_code.js
img
----nolines_plus.gif(870B)
----plusbottom.gif(88B)
----plus.gif(89B)
----empty.gif(62B)
----checkbox_2.gif(181B)
----line.gif(66B)
----imgfolder.gif(622B)
----joinbottom.gif(66B)
----trash.gif(1KB)
----folderopen.gif(376B)
----globe.gif(1KB)
----minus.gif(86B)
----minusbottom.gif(85B)
----checkbox_0.gif(168B)
----musicfolder.gif(633B)
----checkbox_1.gif(174B)
----join.gif(69B)
----biao-8.gif(906B)
----question.gif(1KB)
----nolines_minus.gif(861B)
----page.gif(1012B)
----root.gif(1KB)
----cd.gif(239B)
----folder.gif(614B)
jquery.js
otree.js
otree.htm