zTree内核知识
ztree的内核:
zTree的内核知识:
zTree的内核分析
(function($){
//声明了一些常量
//因为是在匿名函数内部,所以这些常量在外部是没有办法修改的
var ZTREE_NODECREATED = "ZTREE_NODECREATED";
var ZTREE_CLICK = "ZTREE_CLICK";
var ZTREE_RIGHTCLICK = "ZTREE_RIGHTCLICK";
var ZTREE_CHANGE = "ZTREE_CHANGE";
var ZTREE_RENAME = "ZTREE_RENAME";
//插件方法
$.fn.zTree = function(zTreeSetting, zTreeNodes) {
//声明了一个变量,把setting中的各项设置了默认值
var setting = {
checkable: false,
showLine: true,
checkType: {
"Y": "ps",
"N": "ps"
}
}
if (zTreeSetting) {//程序员传递了zTreeSetting的值
//把程序员传递的setting的值覆盖默认的值
$.extend(setting, zTreeSetting);
}
//this代表树的容器,这么写和页面上的元素没有关系了
setting.treeObjId = this.attr("id");
setting.treeObj = this;
//绑定事件
bindTreeNodes(setting, this);
//返回的是zTreePlugin函数返回的json格式的对象
return new zTreePlugin().init(this);
}
//私有函数
function bindTreeNodes(setting, treeObj) {
}
//通过zTreePlugin函数进行API的公开
function zTreePlugin(){
return {//把该json格式中的函数全部公开了
getSetting : function() {}
}
}
//绑定事件
function bindTreeNodes(setting, treeObj) {
treeObj.unbind(ZTREE_NODECREATED);
treeObj.bind(ZTREE_NODECREATED, function (event, treeId, treeNode) {
if ((typeof setting.callback.nodeCreated) == "function") setting.callback.nodeCreated(event, treeId, treeNode);
});
}
})(jQuery);
插件:
1、声明一些常量,这些常量是不能改变的
2、声明一个插件方法,并且返回API
3、声明一些私有的函数
4、缺点:因为在插件内部写的都是function,所以没有结构性
zTree是有一些绑定事件的错误的,如果不先unbind,而直接bind是会出现问题;zTree里面有部分是没有这么做的;
浙公网安备 33010602011771号