zTree的内核:
   *  结构
       (function($){
           //常量部分
           //申明常量是因为这些数据是不能改变的,如果成了对象的属性,很容易就改变了
           var ZTREE_NODECREATED = "ZTREE_NODECREATED";
           var ZTREE_CLICK = "ZTREE_CLICK";
           var ZTREE_RIGHTCLICK = "ZTREE_RIGHTCLICK";
           //插件方法  提供给外部访问的方法
           $.fn.zTree = function(zTreeSetting, zTreeNodes) {
                //声明一个setting
                var setting = {
                    showLine: true,
                    checkType: {
                         "Y": "ps",
                         "N": "ps"
                    }
                    .......
                };
               //判断是否传递了第一个参数
               if(zTreeSetting){
                   //把用户的setting替换掉原来的setting的值
                   $.extend(setting, zTreeSetting);
               }
               //获取树的容器ID
               setting.treeObjId = this.attr("id");
               //树的容器
               setting.treeObj = this;
               //绑定自定义事件
               bindTreeNodes(setting, this);
               //通过在zTreePlugin函数中返回一个json格式的对象,而这个对象中封装被公开的方法(API)
               //因为是在zTree方法中返回的时候new了zTreePlugin(),所以在客户端不需要知道zTreePlugin的细节
               return new zTreePlugin().init(this);
           }
           //私有方法
           function bindTreeNodes(setting, treeObj) {
               //事件的声明
               treeObj.unbind(ZTREE_CLICK);  
               treeObj.bind(ZTREE_CLICK, function (event, treeId, treeNode) {
                    if ((typeof setting.callback.click) == "function") setting.callback.click(event, treeId, treeNode);
               });
           }
           function zTreePlugin(){
                return {
                     init: function(obj) {
                        this.container = obj;
                        this.setting = settings[obj.attr("id")];
                        return this;
                     },
                     getSelectedNode : function() {
                        return this.setting.curTreeNode;
                     }
                     ......
                };
           }
           //私有方法和公开方法的界限:只要在zTreePlugin返回值的json格式中写的方法就是API,没有写就是私有的方法
       })(jQuery);

    *  结构总结:
        *  常量部分
        *  插件方法
           初始化数据
           绑定事件
           调用其他的方法
           公开API
        *  公开API的方法
        *  私有的方法

zTree的内核的更多相关文章

  1. 开发类似"音速启动"的原创工具简码"万能助手"的过程中对ztree.js与win标准控件treeview、HTMLayout树形框等优缺点的比较

    在开发类似"音速启动"的桌面快捷方式管理软件简码"万能助手"的早期规划中,曾经考虑过几种树形框方案: ztree.js.win标准控件treeview.HTML ...

  2. Linux 内核概述 - Linux Kernel

    Linux 内核学习笔记整理. Unix unix 已有40历史,但计算机科学家仍认为其是现存操作系统中最大和最优秀的系统,它已成为一种传奇的存在,历经时间的考验却依然声名不坠. 1973 年,在用 ...

  3. [PHP内核探索]PHP中的哈希表

    在PHP内核中,其中一个很重要的数据结构就是HashTable.我们常用的数组,在内核中就是用HashTable来实现.那么,PHP的HashTable是怎么实现的呢?最近在看HashTable的数据 ...

  4. QT5利用chromium内核与HTML页面交互

    在QT5.4之前,做QT开发浏览器只能选择QWebkit,但是有过使用的都会发现,这个webkit不是出奇的慢,简直是慢的令人发指,Release模式下还行,debug下你就无语了,但是webkit毕 ...

  5. 模仿Linux内核kfifo实现的循环缓存

    想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...

  6. [内核笔记1]内核文件结构与缓存——inode和对应描述

    由来:公司内部外网记录日志的方式现在都是通过Nginx模块收到数据发送到系统消息队列,然后由另外一个进程来从消息队列读取然后写回磁盘这样的操作,尽量的减少Nginx的阻塞. 但是由于System/V消 ...

  7. ucos实时操作系统学习笔记——内核结构和任务创建

    对于ucos实时操作系统,邵贝贝的那本书已经写得很详细了,我因为之前不深的研究过ucos,所以在这里做一个笔记,写一些个人对该操作系统的理解,仅仅是个人理解,如果有人看到这边随笔有不对的地方,望给我指 ...

  8. ztreeDeptSelect 基于jquery和ztree的部门选择插件

    插件介绍 首先我们来看插件的功能演示(效果): 插件准备好后.前台只需编写html: <input type="text" class="deptName" ...

  9. linux内核调试技术之修改内核定时器来定位系统僵死问题

    1.简介 在内核调试中,会经常出现内核僵死的问题,也就是发生死循环,内核不能产生调度.导致内核失去响应.这种情况下我们可以采用修改系统内核中的系统时钟的中断来定位发生僵死的进程和函数名称.因为内核系统 ...

随机推荐

  1. 【原创】js实现一个可随意拖拽排序的菜单导航栏

    1.想做这个效果的原因主要是用在UC上看新闻发现他们的导航菜单很有趣.无聊的时候在哪划着玩了很久.所以就干脆自己写一个.原效果如下 2.整体效果如下,在已推荐和未添加里面每个小方块可以触摸移动位置互换 ...

  2. [python面向对象]--基础篇

    1.#类 #类就是一个模板,模板里可以包含多个函数,函数里实现一些功能 #定义一个类 class bar: def foo(self,agr): print(self,agr) obj = bar() ...

  3. Yii2 用户登录

    在Yii2的basic版本中默认是从一个数组验证用户名和密码,如何改为从数据表中查询验证呢?且数据库的密码要为哈希加密密码验证? 下面我们就一步一步解析Yii2的登录过程. 一. 创建user表模型 ...

  4. Power BI for Office 365(二)Power Query

    在上一篇中我们看到了Power BI在移动端的支持,从这一篇起降依次介绍Power BI中的各个功能组件,此篇讲通过一个故事来介绍如何在Power Query中获取并且组织数据. 在这个系列中,我们将 ...

  5. MySQL 分组后,统计记录条数

    分组后,统计记录条数: SELECT num,count(*) AS counts from test_a GROUP BY num; 查询结果如下: 对num去重后的数量的统计: SELECT co ...

  6. zorka源码解读之Beanshell与zorka的交互实现

    一.beanshell基础知识从应用程序中调用BeanShell创建一个BeanShell的解释器(interpreter)用eval()和source()命令可以对一个字符串求值和运行一个脚本文件使 ...

  7. Redis的PHP操作手册(转)

    String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 $redis-> ...

  8. redis、memcached、mongoDB 对比与安装

    一.redis.memcached.mongoDB 对比 Memcached 和 Redis都是内存型数据库,数据保存在内存中,通过tcp直接存取,速度快,并发高.Mongodb是文档型的非关系型数据 ...

  9. UI--UIPickerView和UIDatePicker的总结

    回到顶部 UIPickerView的主要方法和城市选择器的修正 UIPickerView只有两个数据源方法.要想完整地显示出PickerView,需要结合使用代理方法 数据源方法: // 一共有多少组 ...

  10. javascript 减少回流

    减少回流(REFLOWS) 当浏览器重新渲染文档中的元素时需要 重新计算它们的位置和几何形状,我们称之为回流.回流会阻塞用户在浏览器中的操作,因此理解提升回流时间是非常有帮助的. 回流时间图表 你应该 ...