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. iOS整体框架类图

    Cocoa是OS X和iOS操作系统的程序的运行环境. iOS的操作系统层次结构分为四层:触摸UI层,媒体层,核心服务层,核心OS层.其中底层框架提供iOS的基本服务和技术,高层次框架简历在低层次框架 ...

  2. Java 自动装箱、拆箱机制及部分源码分析

    Integer i = 10; //装箱,反编译后发现调用Integer.valueOf(int i) int t = i; //拆箱,反编译后发现调用i.intValue() public clas ...

  3. SAP 销售订单的文本项目

    http://blog.itpub.net/9859323/viewspace-616508/ ls_hdname = wa_vbak-vbeln .     CALL FUNCTION 'READ_ ...

  4. Spring+SpringMvc+Mybatis框架集成搭建教程一(项目创建)

    一.框架搭建环境 Spring 4.2.6.RELEASE SpringMvc 4.2.6.RELEASE Mybatis 3.2.8 Maven 3.3.9 Jdk 1.7 Idea 15.04 二 ...

  5. 笔记本双系统XP与Ubuntu,重装XP后如何恢复grup引导,另附操作系统启动过程

    背景:笔记本双系统(XP与Ubuntu),其中XP系统因问题重装了一下,重装后不能识别Ubuntu系统(该系统装在另一个磁盘中),直接进入了XP系统. 解决办法:利用U盘(Ubuntu系统)启动机器, ...

  6. php curl 例子

    get方式: set_time_limit(0);        $url ='http://xxxxxxxx?pwd=wJ2312&s=1&e=2&d=1&t=asc ...

  7. POJ 3294 Life Forms 后缀数组+二分 求至少k个字符串中包含的最长子串

    Life Forms   Description You may have wondered why most extraterrestrial life forms resemble humans, ...

  8. android--asp.net webservice 返回json

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  9. Codeforces525E Anya and Cubes(双向搜索)

    题目 Source http://codeforces.com/contest/525/problem/E Description Anya loves to fold and stick. Toda ...

  10. snakebar 的使用

    在一次文章阅读的时候,我浏览到一篇文章关于一个新控件的使用,这个控件就是SnakeBar 该控件和Toast控件一样,在程序运行中起着提示的功能. 效果图如下: 代码如下: Snackbar.make ...