layui tree取消父子联动

最近改动一个老系统,发现原始layui tree当点击子级时,父级也会选中。因业务需要,需要将父子联动取消掉。因老版本的源代码未找到。索性将layui最新版本的tree.js源代码从gitee上copy下来进行修改。

tree.js变更点

setCheckbox方法变更位置:
在这里插入图片描述在这里插入图片描述getChecked方法变更位置:
不加此处逻辑,当获取选中状态时,无法获取子级

修改后的代码已上传到github

使用

前台:

var tree = layui.tree;
window.orgTreeList = function(){
	$.ajax({
		type: 'POST',
		url: '/plugin/admin/organ/queryAllOrganTree',
		data : {},
		success:function(data){
			tree.render({
				elem: '#organTree',
				data: data,
				showCheckbox: true,
				checkChirld: false,
				id: 'id'
			});
			//设置初始化选中
			var selectedOrg = $("#orgIds").val();
			tree.setChecked('id', selectedOrg.split(","));
		}
	});
}

后台递归:

public Object queryAllOrganTree() {
	UsualReturnDTO dto = new UsualReturnDTO();
	dto.setCode(0);
	
	List<ZtreeNodeBo> organs = organService.findAllOrgan();
	
	List<ZtreeNodeBo> orgTree = this.eachList(organs);
	
	return orgTree;
}

private List<ZtreeNodeBo> eachList(List<ZtreeNodeBo> allOrgs) {
	List<ZtreeNodeBo> orgTree = new ArrayList<ZtreeNodeBo>();
	for(ZtreeNodeBo org : allOrgs) {
		if (StringUtils.isEmpty(org.getpId())) {
			org = bulidTree(allOrgs,org);
			orgTree.add(org);
		}
	}
	return orgTree;
}

private ZtreeNodeBo bulidTree(List<ZtreeNodeBo> allOrgs,ZtreeNodeBo node) {
	List<ZtreeNodeBo> children = new ArrayList<ZtreeNodeBo>();
	for(int i=0;i < allOrgs.size(); i++) {
		if(node.getId().equals(allOrgs.get(i).getpId())){
			children.add(bulidTree(allOrgs,allOrgs.get(i)));
		}
	}
	node.setChildren(children);
	return node;
}
/**
 * ztree 节点
 */
public class ZtreeNodeBo {
	
	private String id;
	
	private String pId;
	
	private String name;
	
	private String title;

	private String open;
	
	private String checked;
	
	private List<ZtreeNodeBo> children;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值