前端js:
var ab = {}; ab[0] = {'id':'1','pid':'0'}; ab[1] = {'id':'2','pid':'0'}; ab[2] = {'id':'1.1','pid':'1'}; ab[3] = {'id':'1.2','pid':'1'}; ab[4] = {'id':'1.2.1','pid':'1.2'}; ab[5] = {'id':'1.2.2','pid':'1.2'}; ab[6] = {'id':'1.2.2.1','pid':'1.2.2'}; //调用向下递归 //console.log(ac1(ab,'0')); //console.log(ac2(ab,'1',0)); console.log(ac3(ab,'1.2.2',0)); //向下递归 function ac1(json,pid){ var new_ab = {}; for(var i in json){ if(json[i]['pid']==pid){ new_ab[i] = json[i]; new_ab[i]['children'] = ac1(json,json[i]['id']); } } return new_ab; } //向上递归 function ac3(json,pid,zizeng){ var new_ab = {}; for(var i in json){ if(json[i]['id']==pid){ new_ab[i] = json[i]; new_ab[i]['parent'] = ac3(json,json[i]['pid'],zizeng); } } return new_ab; } //向下平级递归 function ac2(json,pid,zizeng){ var new_ab = {}; for(var i in json){ if(json[i]['pid']==pid){ new_ab[zizeng] = json[i]; new_ab = Object.assign(new_ab,ac2(json,json[i]['id'],zizeng++)); } } return new_ab; } $(function(){ //打印联动选择 $('input[type="checkbox"]').on('click',function(){ var id = $(this).attr('id'); var pid = $(this).attr('pid'); var isOn = $(this).is(':checked'); if($(this).attr('click')=='true'){ isOn = true; $(this).removeAttr('click'); } if(isOn){ //向上递归 function xiangshang(pid){ var isEn = $('input[type="checkbox"][id="'+pid+'"]').size(); if(isEn){ $('input[type="checkbox"][id="'+pid+'"]').attr('checked','checked'); var new_pid = $('input[type="checkbox"][id="'+pid+'"]').attr('pid'); xiangshang(new_pid); } return false; } //向下递归 function xiangxia(id){ var isEn = $('input[type="checkbox"][pid="'+id+'"]').size(); if(isEn){ for(var i=0;i<isEn;i++){ $('input[type="checkbox"][pid="'+id+'"]').eq(i).attr('checked','checked'); var new_id = $('input[type="checkbox"][pid="'+id+'"]').eq(i).attr('id'); xiangxia(new_id); } } return false; } //向上递归 xiangshang(pid); //向下递归 xiangxia(id); } else{ } }); //改变值时勾选打印 $('input[type="text"],select').on('change',function(){ var print_id = $(this).attr('print_id'); var isEn = $('input[type="checkbox"][id="'+print_id+'"]').is(':checked'); if(!isEn){ $('input[type="checkbox"][id="'+print_id+'"]').attr('click','true').click(); } }) });