首页 > 代码库 > 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的内核