Easyui tree扩展tree方法获取目标节点的一级子节点

/*  只返回目标节点的第一级子节点,具体的用法和getChildren方法是一样的 */
$.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;
}
});

项目中需要实现以下效果,点击左边tree,在右边显示小区,而且小区所属的区、市、省也要对应显示出来。

1、选中的节点,显示在右边区域

2、点击右边的收缩查看--展开折叠效果

3、遍历右边 省市区没有,则移除父级-市;省市没有时,移除父级-省

实现的代码如下

$('#tree-box').tree({
url : "termin***tion!initTress.html",
// data : treejson,
animate : true,
checkbox : true,
cascadeCheck : true,
onlyLeafCheck : false,
lines : true,
dnd : false, onCheck : function (node,checked) { /*选中的节点,显示在右边区域*/
var node = node;
moveToRight(node);
}
}
/*选中的节点,显示在右边区域*/
function moveToRight(node){ var tree = $("#tree-box");//树标签
var lelOne = tree.tree('getRoots');//一级节点(省)
var lelOneLength = lelOne.length;
// console.log(lelOne);
if(lelOneLength>0){
//遍历一级节点
for(var i=0;i<lelOneLength;i++){
var lelTwo = tree.tree('getLeafChildren', lelOne[i].target);//二级节点(市)
var lelTwoLength = lelTwo.length;
// console.log(lelTwo);
if(lelTwoLength>0){
//遍历二级节点
for(var j=0;j<lelTwoLength;j++){
var lelTree = tree.tree('getLeafChildren', lelTwo[j].target);//三级节点(县、区)
var lelTreeLength = lelTree.length;
// console.log(lelTree);
if(lelTreeLength>0){
//遍历三级节点
for(var k=0;k<lelTreeLength;k++){
var lelFour = tree.tree('getLeafChildren', lelTree[k].target);//四级节点(小区)
var lelFourLength = lelFour.length;
var housecheck = 0; if(lelFourLength>0){
//遍历四级节点,小区
for(var m=0;m<lelFourLength;m++){
if(lelFour[m].checked){
housecheck = 1;
}
}
//该县区没有小区被勾选
if(housecheck==0){
// console.log(lelTree[k]);
var Parent1_none = lelTree[k].domId; //父级(小区所在的县、区)
var Parent1DomId_none = "#"+Parent1_none+"l";
var Parent1DomId_none_children = "."+Parent1_none;
if($("#win").find(Parent1DomId_none).length>0){
$("#win").find(Parent1DomId_none).remove();
$("#win").find(Parent1DomId_none_children).remove();
} }
//该县区有小区被勾选
if(housecheck==1){
var Parent1 = tree.tree('getParent', lelFour[0].target);//父级(小区所在的县、区)
var Parent2 = tree.tree('getParent', Parent1.target);//父级(小区所在的市)
var Parent3 = tree.tree('getParent', Parent2.target);//父级(小区所在的省) var sheng = '<div class="path-box path-box3" id="' + Parent3.domId +"l"+ '">' +
'<div class="path path3 clearfix">' +
'<div class="path-delete path-delete3 fl"></div>' +
'<div class="area-title fl">' + Parent3.text + '</div>' +
/*'<div class="area-title fl">(132)</div>' +*/
'<div class="area-title control unfold fl">收缩</div></div>'+
'</div></div>'; var shengshi = '<div class="path-box path-box2" id="' + Parent2.domId +"l"+ '">' +
'<div class="path path2 clearfix">' +
'<div class="path-delete path-delete2 fl"></div>' +
'<div class="area-title fl">' + Parent3.text + '</div>' +
'<div class="area-title fl">&gt;</div>' +
'<div class="area-title fl">' + Parent2.text + '</div>' +
/*'<div class="area-title fl">(132)</div>' +*/
'<div class="area-title control unfold fl">收缩</div></div>'+
'</div></div>'; var shengshiqu = '<div class="path-box path-box1" id="' + Parent1.domId +"l"+ '">' +
'<div class="path path1 clearfix">' +
'<div class="path-delete path-delete1 fl"></div>' +
'<div class="area-title fl">' + Parent3.text + '</div>' +
'<div class="area-title fl">&gt;</div>' +
'<div class="area-title fl">' + Parent2.text + '</div>' +
'<div class="area-title fl">&gt;</div>' +
'<div class="area-title fl">' + Parent1.text + '</div>' +
/* '<div class="area-title fl">(132)</div>' +*/
'<div class="area-title control unfold fl">收缩</div></div>'+
'</div></div>'; var Parent1_DomId = "#"+Parent1.domId+"l";
var Parent2_DomId = "#"+Parent2.domId+"l";
var Parent3_DomId = "#"+Parent3.domId+"l"; var Parent1_DomId_class = "."+Parent1.domId+"_1";
var Parent2_DomId_class = "."+Parent2.domId+"_2";
var Parent3_DomId_class = "."+Parent3.domId+"_3"; //插入省 例:广东省(88)收缩
if($("#win").find(Parent3_DomId).length==0){
var shengBox = '<div class="community community1 clearfix ' + Parent3.domId +"_3"+'"></div>';
$("#win").find(".path-wrap").append(sheng);
$("#win").find(Parent3_DomId).append(shengBox);
//
} //插入省市 例:广东省>广州市(88)收缩
if($("#win").find(Parent2_DomId).length==0){
var shengshiBox = '<div class="community community2 clearfix ' + Parent2.domId +"_2"+'"></div>';
$("#win").find(Parent3_DomId_class).append(shengshi);
$("#win").find(Parent2_DomId).append(shengshiBox);
//
} //插入省市区 例:广东省>广州市>天河区(55)收缩
if($("#win").find(Parent1_DomId).length==0){
var shengshiquBox = '<div class="community xiaoqu-name clearfix ' + Parent1.domId +"_1"+'"></div>';
$("#win").find(Parent2_DomId_class).append(shengshiqu);
$("#win").find(Parent1_DomId).append(shengshiquBox);
//
}
//插入小区 例:小区名称1 小区名称2 小区名称3
for(var m=0;m<lelFourLength;m++){
var communityId = lelFour[m].id;
var communityDomId = lelFour[m].domId;
var communityText = lelFour[m].text; var xiaoquming ='<div class="community-name fl" data-id="'+ communityId +'"id="'+ communityDomId + "m" +'">'+ communityText+ '</div>'; var nameid = "#"+communityDomId +"m";
var lelFourChecked = lelFour[m].checked;
if(lelFourChecked){
if($("#win").find(nameid).length==0){
$("#win").find(Parent1_DomId_class).append(xiaoquming);
}
}
if(!lelFourChecked){
if($("#win").find(nameid).length>0){
$("#win").find(nameid).remove();
} }
}
// }
} }
} }
} }
} /* 点击删除右边,左边树形对应的节点取消选中 */
cancelLeft(); /* 点击右边的收缩查看--展开折叠效果(弹窗里) */
quFoldAndUnfoldM(); /*遍历右边 省市区没有,则移除父级-市;省市没有时,移除父级-省*/
moveParent(); }
/* 删除右边,左边树形对应的节点取消选中 */
function cancelLeft(){
//点省前的叉号
$("#win").find(".path-delete3").on("click",function(){
var wrap3 = $(this).parent().parent();
var cancelCommunityName3 = wrap3.find(".community-name");
var shengWrap = wrap3.find(".community2").children(); cancelCommunityName3.each(function(){
var dataId = $(this).attr("data-id");
var cancelNode = $('#tree-box').tree('find', dataId);
$("#tree-box").tree('uncheck', cancelNode.target); }); wrap3.remove();
}); //点省市前的叉号
$("#win").find(".path-delete2").on("click",function(){
var wrap2 = $(this).parent().parent();
var wrap2_parent = wrap2.parent().parent();
var cancelCommunityName2 = wrap2.find(".community-name"); cancelCommunityName2.each(function(){
var dataId = $(this).attr("data-id");
var cancelNode = $('#tree-box').tree('find', dataId);
$("#tree-box").tree('uncheck', cancelNode.target); }); wrap2.remove();
var length2 = wrap2_parent.find(".path-box2").length; if(length2==0){
wrap2_parent.remove();
} }); //点省市区前的叉号
$("#win").find(".path-delete1").on("click",function(){
var wrap1 = $(this).parent().parent();
var wrap1_parent = wrap1.parent().parent();
var wrap1_parent_shi = $(this).parents(".community1");
var wrap1_parent_sheng = $(this).parents(".path-box3"); var cancelCommunityName1 = wrap1.find(".community-name"); cancelCommunityName1.each(function(){
var dataId = $(this).attr("data-id");
var cancelNode = $('#tree-box').tree('find', dataId);
$("#tree-box").tree('uncheck', cancelNode.target); });
var length1 = wrap1_parent.find(".path-box1").length; if(length1==0){
wrap1_parent.remove(); }
var length2 = wrap1_parent_shi.children().length;
if(length2==0){
wrap1_parent_sheng.remove();
} })
}
/* 点击右边的收缩查看--展开折叠效果(弹窗里) */
function quFoldAndUnfoldM(){
var foldState1 = 1;
var foldState2 = 1;
var foldState3 = 1;
//广东省 查看收缩效果
$(".path3 .control").on("click",function(){ var cancelCommunityName = $(this).parent().next(".community");
if(foldState3){
$(this).empty().html("查看");
cancelCommunityName.hide();
foldState3 = 0;
}else{
$(this).empty().html("收缩");
cancelCommunityName.show();
foldState3 = 1;
} }); //广东省>广州市 查看收缩效果
$(".path2 .control").on("click",function(){ var cancelCommunityName = $(this).parent().next(".community");
if(foldState2){
$(this).empty().html("查看");
cancelCommunityName.hide();
foldState2 = 0;
}else{
$(this).empty().html("收缩");
cancelCommunityName.show();
foldState2 = 1;
} }); //广东省>广州市>天河区 查看收缩效果
$(".path1 .control").on("click",function(){ var cancelCommunityName = $(this).parent().next(".community");
if(foldState1){
$(this).empty().html("查看");
cancelCommunityName.hide();
foldState1 = 0;
}else{
$(this).empty().html("收缩");
cancelCommunityName.show();
foldState1 = 1;
} });
}
/*遍历右边 省市区、省市没有时,父级移除*/
function moveParent(){ $("#win").find(".community2").each(function(){
var length2 = $(this).children().length;
if(length2==0){
$(this).parents(".path-box2").remove();
}
}); $("#win").find(".community1").each(function(){
var length1 = $(this).children().length;
if(length1==0){
$(this).parents(".path-box3").remove();
}
});
}

easyui tree扩展tree方法获取目标节点的一级子节点的更多相关文章

  1. 如何设计点击点击一个div,其他div做出对应反应,以及获取一个节点下的子节点

    <div id="show"> <div>1</div> <div>2</div> <div>3</d ...

  2. [转]Javascript removeChild()删除节点及删除子节点的方法(同样适用于jq)

    Javascript removeChild()删除节点及删除子节点的方法 这篇文章主要介绍了Javascript removeChild()删除节点及删除子节点的方法的相关资料,需要的朋友可以参考下 ...

  3. JS编程练习:将目标节点内部的子节点逆序

    将目标节点内部的子节点逆序 1 <body> 2 <div> 3 <p></p> 4 <span></span> 5 <e ...

  4. 删除TreeView节点以及其子节点

    //1.删除TreeView节点以及其子节点procedure TForm2.Button1Click(Sender: TObject);var TreeNode:TTreeNode;begin  i ...

  5. zTree中父节点禁用,子节点可以用

    参考学习网址:http://www.treejs.cn/v3/main.php#_zTreeInfo zTree中父节点禁用,子节点可以用 axios.get('/base/unit/unittree ...

  6. JS获取父、兄、子节点

    一.jQuery的父节点查找方法 $(selector).parent(selector):获取父节点 $(selector).parentNode:以node[]的形式存放父节点,如果没有父节点,则 ...

  7. js,jq获取父,兄弟,子节点整理

    js获取节点 父: parentNode 获取已知节点的父节点. 子: childNodes; 得到全部子节点 children 得到全部子节点 firstChild 获得第一个子节点 lastChi ...

  8. js和jq获取父,兄弟,子节点

    1,js获取节点: 父: parentNode 获取已知节点的父节点. 子: childNodes; 得到全部子节点 children 得到全部子节点 firstChild 获得第一个子节点 last ...

  9. layui xtree 实现一级节点单选 ,子节点复选

    在外部定义变量和方法 //定义变量 接收顶级节点的值 var topValue; // 获取顶级节点值的方法 function getParent(value) { var val = project ...

随机推荐

  1. 2018.10.16 spoj Can you answer these queries V(线段树)

    传送门 线段树经典题. 就是让你求左端点在[l1,r1][l1,r1][l1,r1]之间,右端点在[l2,r2][l2,r2][l2,r2]之间且满足l1≤l2,r1≤r2l1\le l2,r1 \l ...

  2. 2018.08.31 bzoj1419 Red is good(期望dp)

    描述 桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付 出1美元.可以随时停止翻牌,在最优策略下平均能得到多少钱. 输入 一行输入两个数R,B,其 ...

  3. hdu-1141

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1141 参考文章:https://blog.csdn.net/fei____fei/article/de ...

  4. Spring MVC之@RequestMapping 传递数组

    1.前台: var param = {titles:['col1','col2','col3']}; $.ajax({url:url, type:"post", data:para ...

  5. UVa 1638 Pole Arrangement (递推或DP)

    题意:有高为1,2,3...n的杆子各一根排成一行,从左边能看到L根,从右边能看到R根,求杆子的排列有多少种可能. 析:设d(i, j, k)表示高度为1-i的杆子排成一行,从左边看到j根,从右边看到 ...

  6. WPF MediaKit的一点问题

    原版WPF MediaKit在捕获摄像头视频时,如果不使用640*480分分辨率输出,会出现NewVideoSample事件不被触发的问题. 经数日摸索,终于明白SetVideoCapturePara ...

  7. 加锁并发算法 vs 无锁并发算法

    Heinz Kabutz 在上周举办了一次成功 JCrete研讨会,我在会上参加了对一种新的 StampedLock(于JSR166中 引入) 进行的评审.StampedLock (邮戳锁) 旨在解决 ...

  8. hdu 4972 根据每轮篮球赛分差求结果

    http://acm.hdu.edu.cn/showproblem.php?pid=4972 两支球队进行篮球比赛,每进一次球后更新比分牌,比分牌的计数方法是记录两队比分差的绝对值,每次进球的分可能是 ...

  9. [FRAMESET][PHP]Frameset下面使用php-header('location:...') redirect链接

    一般,我们的管理后台都是使用frameset来进行布局的,所以如果我们对后台的登录会话时间进行了设定,那么在超过该时间session失效之后,那么我们就必须要在php文件中进行判断处理. 判断会话失效 ...

  10. 使用 Project Siena 生成一个 Windows Store 应用

    继 App Studio 之后微软又一力作 Project Siena [Win8 应用神器]给初学开发 或 对 Windows Store 应用感兴趣的同学们的一个福利,可以通过 一个简单的应用可以 ...