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