zoukankan      html  css  js  c++  java
  • 来 写颗简单的树......

    数据源用数组混json结构

    实现了基本的功能

    效率一般  跟 dhtree 梅花雪 树 对比了下  都差不多 (ps感觉比dhtree快点 跟梅花雪树差不多   个人测试  也许测试的方法是错误的 哈哈  如果是错误 请告诉我一下)

     这个实现树的原理是根据json

    不断的生成ul li 

    下面是一个简单的例子   (只有涉及到生成树 也就是说只是展示  tree类代码只有64行)

    没有用innerHTML生成 全是是创建节点来创建ul li

    所以创建节点碎片添加  然后再一次性添加很重要啊

    确实能提高不是速度

    在就是处理图片样式了

    这个我参照的风之石的那个tree

     结构和样式都很好  写起来很方便

    所以介绍一下

    最后一个节点   因为没有向下的虚线了  li就不要设置背景图了  切+那个图片也要换

    这边是里加个 l

    这个是 +样子样式

    #demo .tvdash-f{
        background-position: -240px -40px;
    }

    这个是-样式

    #demo .tvdash-f-open{
        background-position: -200px -40px;
    }

    这个就是最后一个节点的样式了

    #demo .tvdash-fl{
        background-position: -100px -40px;
    }

     png图在ie6下有点问题 所以ie6下图可能会看不见  下面那个例子用的是gif的  效果在ie6下正常




    上面只是一个简单的树

     但是树应该是有input的

    并且能够选中 记录选中

    能够开打任何节点

    能够删除不

    能够编辑 保存

    说一下我在这里怎么完成上面的功能

     选中应该是比较麻烦的

    因为选中了 一个节点 

    要让他所有的子节点都选中

    他的父节点也有可能要选中(如果同级的都是选中状态的)

    接着他的父的父也有可能要选中

    所以设计到很多的查找

    当生成一个li的时候

     给li一个属性

                    li.child.push({
                        li    : li,
                        input : isInput ?$q('input',li)[0]:undefined,
                        data  : o
                    });

    记录下他下一级(是下一级 不是所有的子 )的所有的input 和li

    同时记录父的li 和 input

                    li.parent = {
                        li    : parent,
                        input : isInput ?$q('input',parent)[0]:undefined
                    };
    这样查找起来很方便

    但是内存就要用的多些了

    例子

     




     恩 找个时间补个ajaxtree

  • 相关阅读:
    ps中的一些方法
    extjs 横向滚动条 和 本地排序
    JS JSON.parse() 和 JSON.stringify()
    SQL 同一个表中 根据一列更新另一列(不同行)
    extjs2.2 panel加背景色
    extjs2.2 combo的监听
    ExtJS2.2 form表单提交时不提交emptyText
    Extjs 复制对象
    Extjs 显示或隐藏滚动条
    Extjs2.2 开始时间,结束时间,工期 联动(选二补一),包含日期,天数的互转
  • 原文地址:https://www.cnblogs.com/wtcsy/p/2015542.html
Copyright © 2011-2022 走看看