easyui tree中的onCheck事件的一些處理辦法

需求:

        有一棵這樣的樹,點擊父節點時,子節點要全勾,取消父節點時,子節點又要全部取消勾選,但是,還有子節點全部取消勾選的同時,還得讓父節點的勾選保留。

想法:

        第一想法就是取消級聯檢查自己實現oncheck事件啊。。。但是,要初始化勾選的時候,發現進入了死循環或者總是達不到滿意的效果。。。。

解決辦法:

        oncheck事件正常實現,在初始化勾選的時候避開樹的oncheck事件就好。

        那麼問題來了,怎麼避免,想到急用checkbox的選中事件,可惡的是,easyui的tree裏面的checkbox居然是span!!!操作樣式實現勾選效果的。既然你操作css那我我也操作。下面上代碼:

 		onCheck:function(node,checked) {
 			if (node.attributes == 1 && !checked) { // 父節點勾選子節點全選
 				var child = $('#departTree').tree('getChildren', node.target);
 				for(var i =0;i<child.length;i++){
					$('#departTree').tree('uncheck',child[i].target);
 				}
 			}
 			if (node.attributes == 1 && checked) { // 父節點取消勾選子節點也全部取消
 				var child = $('#departTree').tree('getChildren', node.target);
 				for(var i =0;i<child.length;i++){
					$('#departTree').tree('check',child[i].target);
 				}
 			}
 		}
注:attributes這裏我用來做父節點根節點的標誌,0表示根節點,1表示父節點,2表示子節點

然後再初始化勾選的時候

		var node = $('#departTree').tree('find', deptIdArr[i]);				
		var v = node.target;
		var $v =$(v);
		$v.children('.tree-checkbox').removeClass('tree-checkbox0').addClass('tree-checkbox1');	
注:deptIdArr[i]這邊表示節點的id

操作CSS來模仿勾選效果,不觸發oncheck事件。這樣就能達到想要的初始得效果了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章