給zTree添加onSelect callback

  因爲jquery ui沒有集成tree控件,因此在網上找到了zTree v3。zTree無疑是功能很是強大的一款jquery的插件,並且是國人做品,zTree的文檔寫得也很是好,效果很炫。可是我在使用過程當中,發現ztree目前的版本,缺少一個onSelect的callback。系統的要求是這樣的,Tree的數據load完成,render以後,自動選擇一個節點,並根據該節點從server裝載新的數據並顯示。因而決定本身添加一下此功能。javascript

  經分析發現zTree的實例是在調用jQuery.fn.zTree.init的時候動態構建的,因此不存在一個靜態的類來擴展,因此只有在構建zTree實例的時候截取實例變量並進行擴展,廢話少說上代碼:php

function enZTree(){
	if(!$.fn.zTree._ori_init){
		$.fn.zTree._ori_init=$.fn.zTree.init;
		$.fn.zTree.init=function(){
			obj=$.fn.zTree._ori_init.apply(this,arguments);
			return function(t){
				t._ori_selectNode=t.selectNode;
				t.selectNode=function(nd){
					t._ori_selectNode.apply(this,arguments);
					if (this.setting.callback.onSelect){
						this.setting.callback.onSelect(null,this.setting.treeId,nd);
					}
				};
				return t;
			}(obj);
		}
	}
}

 代碼經過替換jQuery.fn.zTree.init函數實現對用戶構建的zTree實例的動態擴展。onSelect的配置參照api文檔中其餘callback的設置便可。java

若是須要自動擴展,則須要註冊一個啓動方法:jquery

jQuery(document).ready(function(){
enZTree();
});
相關文章
相關標籤/搜索