zTreeにonSelectcallbackを追加

1441 ワード

jquery uiにはtreeコントロールが統合されていないため、zTree v 3がネット上で見つかりました.zTreeは間違いなく機能が非常に強いjqueryのプラグインであり、国人作品であり、zTreeのドキュメントも非常によく書かれており、効果的です.しかし、私は使用中にztreeの現在のバージョンがonSelectのcallbackに欠けていることを発見しました.システムの要件は、Treeのデータloadが完了し、renderが完了した後、自動的にノードを選択し、そのノードに基づいてserverから新しいデータをロードして表示することです.そこで自分でこの機能を追加することにしました.
解析によりzTreeの例はjQueryを呼び出していることが分かった.fn.zTree.Initの場合は動的に構築されるため、静的なクラスが拡張されないため、zTreeインスタンスを構築するときにインスタンス変数を切り取って拡張するしかありません.くだらないことはコードを言わないでください.
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の設定を参照すればよい.
自動拡張が必要な場合は、起動方法を登録する必要があります.
jQuery(document).ready(function(){
enZTree();
});