1. 程式人生 > >(轉)EasyUI元件tree只展開根節點下的一級子節點或二級子節點

(轉)EasyUI元件tree只展開根節點下的一級子節點或二級子節點

Easyui Tree外掛獲取子節點的時候用的getChildren方法,但是這個方法獲取到的節點卻是級聯獲取了子節點下的子節點,但是在有些時候,我們並不希望他返回這麼多。我們只想獲取目標節點的一級子節點,那麼就我們就需要擴充套件我們自己的方法了。
這裡我擴充套件了這個方法(getLeafChildren):

$.extend($.fn.tree.methods,{  
    getLeafChildren:function(jq, params){  
        var nodes = [];  
        $(params).next().children().children("div.tree-node").each(function(){  
            nodes.push($(jq[0]).tree('getNode',this));  
        });  
        return nodes;  
    }  
}); 

具體的用法和getChildren方法是一樣的,只是這個只返回目標節點的第一級子節點。
例把省市縣下拉列表展開到市級:

 function expandNode(){
  var combotree_org=$('#admin_elecmg_activity_plan_orgNo').combotree('tree');
  combotree_org.tree('collapseAll');//摺疊所有節點
  /**方法一:根據省id展開**/
//   var root=combotree_org.tree('getRoot');//獲取根節點
//   combotree_org.tree('expand', root.target);//展開根節點
//   var node = combotree_org.tree('find', 41101);//找到獲取國網河南省電力公司
//   combotree_org.tree('expand', node.target);//展開國網河南省電力公司
  
  /**方法二:由根開始遍歷一級一級的展開,展開到市級**/
  var roots=combotree_org.tree('getRoots'),children=null,i,j;
  for(i=0;i<roots.length;i++){
   combotree_org.tree('expand', roots[i].target);
   children=combotree_org.tree('getLeafChildren',roots[i].target);
   for(j=0;j<children.length;j++){
    combotree_org.tree('expand', children[j].target);
   }
   alert(children.length);
  }
  /**展開到縣級**/
//   var roots=combotree_org.tree('getRoots'),children=null,children2=null,i,j,k;
//   for(i=0;i<roots.length;i++){
//    combotree_org.tree('expand', roots[i].target);
//    children=combotree_org.tree('getLeafChildren',roots[i].target);
//    for(j=0;j<children.length;j++){
//     combotree_org.tree('expand', children[j].target);
//     children2=combotree_org.tree('getLeafChildren',children[j].target);
//     for(k=0;k<children2.length;k++){
//      combotree_org.tree('expand', children2[k].target);
//     }
//    }
//   }
 }

我所需需要的是將選單開啟到三級子節點,程式碼如下

 var root = $menu.tree("getRoot");
//           	$menu.tree("expandAll", root.target);
           	var childrenNodes=$menu.tree('getLeafChildren',root.target);
	          for ( var i = 0 ; i < childrenNodes.length ; i++ )
						{
							var grandChendrenNodes=$menu.tree('getLeafChildren',childrenNodes[i].target);
							for ( var j = 0 ; j < grandChendrenNodes.length ; j++ )
							{
								$menu.tree('expandTo',grandChendrenNodes[j].target);
							}
						}

最後一塊是我自己的程式碼