基于jQuery-zTree-2.5内核的简单分析

未命名

zTree插件: 程序员

(function($){ json

   //常量的定义 函数

   var ZTREE_NODECREATED = "ZTREE_NODECREATED"; this

   var ZTREE_CLICK = "ZTREE_CLICK"; spa

   var ZTREE_RIGHTCLICK = "ZTREE_RIGHTCLICK"; 插件

   var ZTREE_CHANGE = "ZTREE_CHANGE"; 对象

   //插件方法 事件

   $.fn.zTree = function(zTreeSetting, zTreeNodes) { get

        //设置setting的默认值 回调函数

        var setting = {

            checkable: false,

            showLine: true,

            checkType: {

               "Y": "ps",

               "N": "ps"

            }

        }

        if (zTreeSetting){//调用zTree方法的执行人把zTreeSetting传递进来了

             $.extend(setting, zTreeSetting);//把程序员设置setting中的值覆盖默认的值

        }

        //setting.treeObjId表明树的容器ID

        setting.treeObjId = this.attr("id");

        //setting.treeObj表明树的容器

        setting.treeObj = this;

        //绑定事件

        bindTreeNodes(setting, this);

        //经过该函数公开了API

        return new zTreePlugin().init(this);

   }


   //zTreePlugin函数返回了一个特别大的json格式对象,该对象中包含了公开的API

   function zTreePlugin(){

        return {

            getSetting:function(){},

            getNodeByParam:function(){}

        };

   }


   //若是一个函数没有包含在json对象中,该函数就能够是私有的方法

})(jQuery)



   该结构的优势:

       一、作到了函数的私有和公开

       二、常量作到了外部不能访问

       三、结构有着固定的模式

           一、声明常量

           二、声明插件方法

              一、把相应的配置设置默认的值

              二、把程序员传递进来的某几项配置覆盖默认的配置

              三、声明事件

              四、公开API

           三、公开API的方法

           四、私有方法

   该结构的缺点

       结构化不明显,全是function



事件:

    一、事件的声明

         bindTreeNodes

             treeObj.unbind(ZTREE_CLICK); 

             treeObj.bind(ZTREE_CLICK, function (event, treeId, treeNode) {

                                                      //callback中的click是一个回调函数

                 if ((typeof setting.callback.click) == "function") setting.callback.click(event, treeId, treeNode);

              });

    二、触发事件

             setting.treeObj.trigger(ZTREE_CLICK, [setting.treeObjId, treeNode]);

相关文章
相关标签/搜索