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

相关文章

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与