jsTree动态创建节点,解决创建不了节点问题

2024-06-10 09:58

本文主要是介绍jsTree动态创建节点,解决创建不了节点问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

官方文档

https://www.jstree.com.cn/

js动态创建节点不成功的原因

主要是配置没有设置check_callback,默认是false,需要配置返回true,才可以创建节点

<link href="/jstree/themes/default/style.min.css?v=2021-02-08-1" rel="stylesheet" />
<script src="/lib/jquery/dist/jquery.min.js?v=2021-02-08-1"></script>
<script src="/jstree/jstree.min.js"></script><div id="tree_div" class="demo" lay-ignore></div>

!function(){$('#tree_div').jstree({'core': {//不支持多选false,多选为true"multiple": false,'data': {//请求后台url"url": '/department/add',//提交的参数"data": function (node) {return { "id": node.id };}},'check_callback': function (operation, node, node_parent, node_position, more) {// operation can be 'create_node', 'rename_node', 'delete_node', 'move_node', 'copy_node' or 'edit'// in case of 'rename_node' node_position is filled with the new node name// return operation === 'rename_node' ? true : false;//确定当用户尝试修改树的结构时会发生什么情况。//如果 false创建,重命名,删除,移动或复制之类的所有操作,则将被阻止。//您可以将其设置 true 为允许所有交互,或使用功能进行更好的控制。//需要创建节点,请将设置改为truereturn true;},//出错'error': function (r) {console.log("**************error**********");console.log(r);}}           }).on("select_node.jstree", function (event, node) {//选中一个节点触发//console.log(event);//console.log(node);$("#txtDepartment").val(node.node.text);$("#txtSno").val(node.node.original.m_sno);if (node.node.original.m_status == 1) {$("input[name=status_dp][value=1]").click();             } else {$("input[name=status_dp][value=0]").click();}layui.form.render();});function save() {var arrId = $('#tree_div').jstree().get_top_selected();if (arrId.length == 0) {showMsg('请选中一个节点');return false;}var txtDepartment = $("#txtDepartment").val();//var txtParentId = $("#txtParentId").val();var txtParentId = '';var txtSno = $("#txtSno").val();var status = $("input[name='status_dp']:checked").val();//操作类型,var data_type = $("input[name='data_type']:checked").val();if (txtDepartment=="") {showMsg('部门名称不可为空');return;}//var departmentId = $("#departmentId").val();var departmentId = arrId[0];var url = p.addUrl;if (data_type == "edit") {//修改url = p.updateUrl;}else if (data_type == "child") {//父级idtxtParentId = departmentId;}var fm = {Id: departmentId,Department_name: txtDepartment,Parent_id: txtParentId,Sno: txtSno,d_status: status};console.log('发送参数');console.log(fm);$.ajax({url: url,type: "post",data: fm,success: function (r) {if (r.code == 200) {showMsg(r.msg);//测试成功;创建节点//$.jstree.reference('#tree_div').create_node('父节点id', { id: '创建节点id', text: '武松', icon: "jstree-file" });//创建一个节点if (data_type == 'child') {//新增下级$.jstree.reference('#tree_div').create_node(txtParentId, { id: r.data.id, text: txtDepartment, icon: "jstree-file", m_sno: r.data.sno, m_status: r.data.d_status });}else if (data_type == 'same') {//获取父节点id//$.jstree.reference('#tree_div').get_parent('44fb104497134ecea551cbef6176543d');var parentId = $.jstree.reference('#tree_div').get_parent(departmentId);//新增同级$.jstree.reference('#tree_div').create_node(parentId, { id: r.data.id, text: txtDepartment, icon: "jstree-file", m_sno: r.data.sno, m_status: r.data.d_status });}else if (data_type == 'edit') {//编辑节点名称//rename_node$.jstree.reference('#tree_div').rename_node(departmentId, txtDepartment);}						 } else {showAlert(r.msg);}//setTimeout(function () { location.reload(); }, 2000);}});}
}();		

后台返回json格式

children 如果有下级,则设置true,没得设置为false,这个会影响有没有展开的图标
icon是设置节点图标的
id是节点id
text节点名称

[{"id":"740fc4db0d664d20b9c27a7cb200e969","text":"翰林院","children":true,"icon":"","m_sno":1,"m_status":1},{"id":"6c876b4974b34259bc3b89c2e5ca484d","text":"门下省","children":true,"icon":"","m_sno":10000,"m_status":1},{"id":"069906775b2d4ef382d5e4f689f68037","text":"职能部门","children":true,"icon":"","m_sno":99900,"m_status":1}]

在这里插入图片描述

这篇关于jsTree动态创建节点,解决创建不了节点问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1047843

相关文章

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三