jstree 删除所点击的节点下面的所有子节点 并重新添加

jstree 删除所点击的节点下面的所有子节点 并重新添加

function method() {
		var pNode = $('#container').jstree('get_node', wxxh.id)  //wxxh.id 为所点击的目录的id ,通过id获取到这个父节点
		$('#container').jstree('open_node', pNode, function () {  //展开该父节点,不然获取不到自己点
		 	var childrens = $('#container').jstree('get_children_dom', pNode) //根据父节点获取下面的所有子目录,因为拿到的是所有子集的dom集合
		var childrenNodes = [];
		$.each(childrens, function(index, ele) {  //遍历子节点集合
			childrenNodes.push($('#container').jstree('get_node', ele))//通过dom 获取每一个子节点,并装到数组childrenNodes 中
		})
		$('#container').jstree('delete_node', childrenNodes)  //删除所有的子目录  ...  所点击的目录下已经清空
		$.ajax({  //重新获取子节点
			type: "get",
			url: "/automatedtesting/testrequirement/getAllCatalog",
			data: {
				database: wxxh.id
			},
			async: true,
			success: function(res) {
				if(res.errno) {
					layer.msg('获取失败', {
						icon: 2
					});
					return;
				}
				var len = res.data.data
				var lens = jstreeFuncs.transData(len)
				lens = lens.reverse(); //倒叙排列数组

      //上面几步为重新获取到子节点。。。
				
				//添加目录
				for(var i = 0; i < lens.length; i++) { //此处目录如果大于一层  需要使用循环添加      (目前这样没找到好办法,只能这样添加,如果哪位大佬有更好的方法,请留言指点)
					$('#container').jstree('create_node', wxxh.id, lens[i], "first")
				}
	
			}
		});
		})
}

//遍历 重新排列数结构  我这里是一共三层
function   transData(data) {
		var tmpArr = [];
		var result = [];
		$.each(data, function(index, ele) {
			if(ele.parent_id) {
				tmpArr.push({
					text: ele.name,
					id: ele._id,
					parent_id: ele.parent_id
				});
			} else {
				result.push({
					text: ele.name,
					id: ele._id,
					children: []
				})
			}
		})
		$.each(tmpArr, function(index, ele) {
			var len = result.length;
			for(var i = 0; i < len; i++) {
				if(result[i].id == ele.parent_id) {
					result[i].children.push(ele);
					break;
				}
			}
		})
		return result;
	}
发布了17 篇原创文章 · 获赞 11 · 访问量 561

猜你喜欢

转载自blog.csdn.net/weixin_45563734/article/details/103095374