欢迎访问WDPHP素材源码!今天是2024年04月20日 星期六,夜幕降临了,还在工作吗?
您好,游客 [ 马上登录 | 注册帐号 | 微信登录 | QQ登录]
当前位置:首页 > 教程 > PHP教程 > 

zTree异步加载并初始化树时全部展开
栏目分类:PHP教程    发布日期:2018-06-24    浏览次数:4662次     收藏

如果父节点数量很大,请注意利用延时进行控制,避免异步进程过多。因此需要用延迟加载的方式控制。

<link rel="stylesheet" href="css/demo.css" type="text/css">
<link rel="stylesheet" href="css/zTreeStyle/zTreeStyle.css" type="text/css">
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.ztree.core-3.5.js"></script>
	<SCRIPT type="text/javascript">
		var setting = {
			async: {
				enable: true,
				url:"../ajaxGetNodes.php",
				autoParam:["id", "name=n", "level=lv"],
				otherParam:{"otherParam":"zTreeAsyncTest"},
				dataFilter: filter,
				type: "get"
			},
			callback: {
				beforeAsync: beforeAsync,
				onAsyncSuccess: onAsyncSuccess
			}
		};

		function filter(treeId, parentNode, childNodes) {
			if (!childNodes) return null;
			for (var i=0, l=childNodes.length; i<l; i++) {
				childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
			}
			return childNodes;
		}

		function beforeAsync() {
			curAsyncCount++;
		}
		
		function onAsyncSuccess(event, treeId, treeNode, msg) {
			curAsyncCount--;
			if (curStatus == "expand") {
				expandNodes(treeNode.children);
			} else if (curStatus == "async") {
				asyncNodes(treeNode.children);
			}

			if (curAsyncCount <= 0) {
				curStatus = "";
			}
		}

		var curStatus = "init", curAsyncCount = 0, goAsync = false;
		function expandAll() {
			if (!check()) {
				return;
			}
			var zTree = $.fn.zTree.getZTreeObj("treeDemo");
			expandNodes(zTree.getNodes());
			if (!goAsync) {
				curStatus = "";
			}
		}
		function expandNodes(nodes) {
			if (!nodes) return;
			curStatus = "expand";
			var zTree = $.fn.zTree.getZTreeObj("treeDemo");
			for (var i=0, l=nodes.length; i<l; i++) {
				zTree.expandNode(nodes[i], true, false, false);//展开节点就会调用后台查询子节点
				if (nodes[i].isParent && nodes[i].zAsync) {
					expandNodes(nodes[i].children);//递归
				} else {
					goAsync = true;
				}
			}
		}

		function check() {
			if (curAsyncCount > 0) {
				return false;
			}
			return true;
		}

		$(document).ready(function(){
			$.fn.zTree.init($("#treeDemo"), setting);
			setTimeout(function(){
				expandAll("treeDemo");
			},1000);//延迟加载
		});
		
	</SCRIPT>

源码 模板 特效 素材 资源 教程 站长