標籤:on() 核心 init jquer treeset 沒有 傳遞 cal htc
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的核心