首页 > 代码库 > zTree的内核

zTree的内核

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的内核