基於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]);

相關文章
相關標籤/搜索