论坛首页 Web前端技术论坛

带选择框的JS树控件2 (为JSTree再次提速)

浏览 39086 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-12-17   最后修改:2010-01-06
没有考虑过search,因为我开始考虑的只是如何快速展现一棵树。

但是TreePanel里面有个this.nodeHash变量,记录了节点ID和节点的映射
(一个hash)。
如果是简单的搜索可以用this.nodeHash遍历所有节点。







感谢winner720发现的一个BUG

这部分代码要改一下(粗体部分)

//瀑布(遍历所有子节点)
cascade : function(fn, scope, args){
  if(fn.call(scope || this, (args==null?this:args)) !== false){
    var cs = this.childNodes;
    for(var i = 0, len = cs.length; i < len; i++) {
      cs[i].cascade(fn, scope, args);
    }
  }
},




以前是 args||this,当节点checked是0的时候可能出现返回this的BUG,改成(args==null?this:args)就不会出现问题了。
0 请登录后投票
   发表时间:2010-01-21  
1、这棵树,如果能够不用jquery更好,为了棵树多用上个jquery似乎不太喜欢。
2、
引用
但是如果是checkbox-tree(带选择框的树),却不能使用这个方法。因为对于带选择框的JS树,选中根节点的话,子节点应给也被选中。所以选中根节点,子节点必须存在。 所以节点数据需要一次生成。
非也。为什么子节点必须存在呢?完全可以不存在!只有用户展开了这个节点的时候,才必须让子节点存在。也就是目前不用看到的,都可以不画,等需要时再绘制。
0 请登录后投票
   发表时间:2010-01-29   最后修改:2010-01-29
cuixiping 写道
1、这棵树,如果能够不用jquery更好,为了棵树多用上个jquery似乎不太喜欢。
2、
引用
但是如果是checkbox-tree(带选择框的树),却不能使用这个方法。因为对于带选择框的JS树,选中根节点的话,子节点应给也被选中。所以选中根节点,子节点必须存在。 所以节点数据需要一次生成。
非也。为什么子节点必须存在呢?完全可以不存在!只有用户展开了这个节点的时候,才必须让子节点存在。也就是目前不用看到的,都可以不画,等需要时再绘制。




第一个问题:
好吧,我承认。那个jquery.js是多余的,因为我压根没用到。你可以放心删掉。
otree_old.htm otree_old.js 是以前写的例子,可以一并删掉。



第二个问题:
我说的是数据一次生成,一次加载。

我的节点其实分成两部分,数据模型和 界面UI。这地方我是分开处理的(虽然看起来写到了一起)。
我的节点加载时一定存在的。因为存在的节点方便我注册以及处理。
但是界面上的element并不一定存在。因为浏览器生成一个页面元素是很耗时的。所以只有再需要展示(展开显示)的时候我才会去new一个页面元素。

如上,节点(指页面Element元素)可以在展开时才绘制的,而我也是这样做的
0 请登录后投票
   发表时间:2010-02-04  
这个真的很好用  ,但如果我只想选中“中国”并保持所有其子结点为空应该怎么做?
0 请登录后投票
   发表时间:2010-02-04  
支持分级查找么
0 请登录后投票
   发表时间:2010-02-04  
如果大数据量,活着级数比较多,能否支持??
0 请登录后投票
   发表时间:2010-02-08   最后修改:2010-02-08
非常好用!!

现在需要打开页面时,展开所有结点
貌似可以在页面加载完成后,调用 expandAll()
但速度太慢了,例子中,4核CPU都需要10秒左右

能不能进入页面时,就把HTML代码写好
调用一个初始化方法,让 HTML 代码和 root 里的数据对应
(HTML代码和 root 都是写好的,只需要初始化就行了)
0 请登录后投票
   发表时间:2010-04-15   最后修改:2010-04-16
1、最上级:中国,没办法收缩,
2、htm中只能引用china_2_code.js,引用china_2.js会提示JS错误(IE6)
3、建议可以设置参数,比如:自动选择子节点(只选中国,不跟选子节点),自动选择父节点(同个父节点下的子节点全选时,不自动选择父节点)。

以上希望楼主可以完善




0 请登录后投票
   发表时间:2010-04-29  
到底哪个才是最新版?越看越糊涂
0 请登录后投票
   发表时间:2010-04-29   最后修改:2010-04-29
为什么我下载的版本中var node = tree.focusNode;得到的node都是null?
明白原因了,你的勾选根本没用,只有选中文本才生效
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics