jsTree异步动态加载子节点

1.项目环境

想要将显示区域作为查询的条件,而区域是树形结构并且可以多选,并且数据量很大,是从中国到乡镇的地区数据,如果我们一次将所有的区域数据查出直接塞到树形结构,那么页面将会卡死,因此我们需要每次加载部分数据,如果展开下级,那么显示下一级所有的区域,这样可以解决数据量大而导致页面无法缓存的问题。

2.导入样式表

<link type="text/css" rel="stylesheet" href="../js/jsTree/themes/default/style.min.css">

3.导入js包

<!-- jquery的js包 -->
<script type="text/javascript" src="../js/jquery.min.js"></script>
<!-- jsTree树形结构插件-->
<script type="text/javascript" src="../js/jsTree/jstree.min.js"></script>

4.html

<div id="regionTree" style="margin-left:20px;"></div>

5.区域树

function initRegionTree(){
	$("#regionTree").jstree({
        'plugins' : ["checkbox"], //出现选择框
        'checkbox': { cascade: "", three_state: false }, //不级联
        'core': {
		    "data" : {  
		        "dataType" : 'json', 
		        "opts":{  
	                method: "POST"
		        },
		        "url" : function(node){  
		            return url; 
		        },  
		        "data" : function(node){
		        	if(node.id !="#"){
		        		return {"id" : node.id};
		        	}
		            return {"id" : 0};//写自己的加载数据
		        }
		    }, 
            "themes": {
            	"theme" : "apple",
            },
            "multiple" : true,//可以多选
        }
    });
    //隐藏图标
    $("#regionTree").jstree().hide_icons();
    //刷新区域树
    $("#regionTree").jstree('refresh');
}

6.页面接收节点的数据结构

[
	{"children":false,"id":"107712","text":"广东省"},
	{"children":false,"id":"175820","text":"海南省"},
	{"children":true,"id":"18047","text":"浙江省"},
	{"children":true,"id":"2","text":"福建省"},
	{"children":true,"id":"237641","text":"河南省"},
	{"children":false,"id":"291426","text":"黑龙江省"},
	{"children":true,"id":"307715","text":"湖北省"},
	{"children":true,"id":"403889","text":"江苏省"},
	{"children":true,"id":"493130","text":"山东省"},
	{"children":true,"id":"74873","text":"北京市"},
	{"children":true,"id":"81714","text":"安徽省"}
]
分析:

id为标识。

text为显示的文本数据。

children标志位如果为true,那么说明存在子节点,下次点击会自动再次发送链接加载子节点。标志位为false,那么说明当前节点为叶子节点,那么当前节点不存在子节点了。

7.结果


8.获取选中对象的ID和值

var selectedRegionArr = $('#regionTree').jstree().get_checked(true);//获取选中的对象,返回值为数组
for(var i=0 ; i<selectedRegionArr.length ; i++){
	alert(selectedRegionArr[i].text);//打印选中的值
	alert(selectedRegionArr[i].id);//打印选中的ID
}

9.复选框树通用模型

/**
 * 通用方法,生成树模型
 * 参数:
 * elementId :生成树显示的控件ID
 * url:动态加载子节点的url
 * initialId:初始化节点
 * */
function initJSTree(elementId,url,initialId){
	$("#"+elementId).jstree({
        'plugins' : ["checkbox"], //出现选择框
        'checkbox': { cascade: "", three_state: false }, //不级联
        'core': {
		    "data" : {  
		        "dataType" : 'json', 
		        "opts":{  
	                method: "POST"
		        },
		        "url" : function(node){  
		            return url; 
		        },  
		        "data" : function(node){
		        	if(node.id !="#"){
		        		return {"id" : node.id};
		        	}
		            return {"id" : initialId};
		        }
		    }, 
            "themes": {
            	"theme" : "apple",
            },
            "multiple" : true,//可以多选
        }
    });
    //隐藏图标
    $("#"+elementId).jstree().hide_icons();
    //刷新区域树
    $("#"+elementId).jstree('refresh');
}

10.jsTree中文API文档

jsTree中文API文档




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Js tree是一款强大的树形菜单插件。它基于JavaScript开发,可以帮助我们轻松地创建和管理树状结构的菜单。这个插件提供了丰富的功能和选项,可以满足不同项目的需求。 首先,Js tree具有良好的扩展性,允许我们根据自己的需求进行定制。它提供了多种配置选项和API,可以自定义菜单的外观和行为。例如,我们可以设置节点的图标、背景颜色和样式,以及展开和折叠的动画效果等。 其次,Js tree支持异步数据。这对于大型树形菜单非常有用,它可以在需要的时候按需节点,而不是一次性所有节点。这样可以减少初始化时间和资源占用,提高用户体验。 此外,Js tree还支持复选框和拖拽功能。复选框可以让用户一次性选择多个节点,用于批量操作。拖拽功能可以让用户轻松地调整节点的位置和层级,实现树的重新排序和结构调整。 最后,Js tree提供了丰富的事件和回调函数,可以让我们对菜单的各种操作进行监听和处理。例如,我们可以监听节点的点击、展开和折叠事件,以及复选框的勾选和取消勾选事件。这样可以方便地与后端交互,实现菜单的动态更新。 总的来说,Js tree是一款强大而灵活的树形菜单插件,具有丰富的功能和选项。无论是构建网站导航菜单,还是实现组织结构图等复杂的树状结构,Js tree都是一个理想的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值