基于springboot和ajax的简单项目 013 ztree插件使用,这是关于修改和新增的

news2024/11/26 2:38:49

先写写的是menu_list.html文件上的内容。
01.在自动加载函数上写点击事件

$(".input-group-btn")
	.on("click",".btn-delete",doDeleteObject)
    .on("click",".btn-add,.btn-update",doLoadEditUI);

02.登录函数:

function doLoadEditUI(){
	var title;
	//基于点击对象的class属性值,修改标题
	if($(this).hasClass("btn-add")){
		title="添加菜单";
	}else{
		title="修改菜单";
		var item=doGetCheckedItem();
		if(!item){
			alert("请先选择");
			return;
		}
		$("#mainContentId")
		.data("rowData",item);
	}
	//异步加载编辑页面
	var url="menu/menu_edit";
	$("#mainContentId").load(url,function(){
		$(".box-title").html(title);
	})
}

如果是修改按钮:

function doGetCheckedItem(){
	return $("tbody input[type='radio']:checked")
	.parents("tr").data("rowData");
}

在这里插入图片描述

在这里插入图片描述

这里写的是menu_edit.html文件上的内容。
01
导入相关的资源:

 <script type="text/javascript" src="bower_components/ztree/jquery.ztree.all.min.js"></script>
  <script type="text/javascript" src="bower_components/layer/layer.js">
  </script>

自动加载函数:

  $(function(){
	  $(".form-horizontal")//事件不能注册到$("#mainContentId")对象上
	  .on("click",".load-sys-menu",doLoadZtreeNodes);
	  
	  $("#menuLayer")
      .on("click",".btn-confirm",doSetSelectNode)
      .on("click",".btn-cancel",doHideTree);
	  
	  $(".box-footer")
	  .on("click",".btn-cancel",doCancel)
	  .on("click",".btn-save",doSaveOrUpdate)
	  
	  var data=$("#mainContentId").data("rowData");
	  if(data)doInitEditFormData(data);

  })

02.声明一个变量用于ztree插件中
first:显示数据在插件中:

var zTree; //zTree是第三方扩展的一个Jquery插件


  //初始化zTree时会用到
  var setting = {
  	data : {
  		simpleData : {
  			enable : true,//表示使用简单数据模式
  			idKey : "id",  //节点数据中保存唯一标识的属性名称
  			pIdKey : "parentId",  //节点数据中保存其父节点唯一标识的属性名称
  			rootPId : null  //根节点id
  		}//json 格式javascript对象
  	}
  }//json 格式的javascript对象

02.在自动加载函数:

$(function(){
	  $(".form-horizontal")//事件不能注册到$("#mainContentId")对象上
	  .on("click",".load-sys-menu",doLoadZtreeNodes);
}	  

在这里插入图片描述

function doLoadZtreeNodes(){
	  var url="menu/doFindZtreeMenuNodes";
	  //异步加载数据,并初始化数据
	  $.getJSON(url,function(result){
		  if(result.state==1){
			  //使用init函数需要先引入ztree对应的js文件
			  zTree=$.fn.zTree.init(
					  $("#menuTree"),
					  setting,
					  result.data);//id,name,parentId,这里的result.data就是方法声明中的参数znode
			   //doRemoveNodeFromZtree();//修改时,可考虑此方案
			   //显示zTree对应的div
			   $("#menuLayer").css("display","block");
		  }else{
			  alert(result.message);
		  }
	  })
  }

$.fn是在jQuery原型上面添加方法或者属性,相当于 jQuery.prototype。例如 $.fn.show=function(){xxxx} ,那么就可以直接使用 $.show()调用这个方法

在这里插入图片描述
在这里插入图片描述

css样式属性值:在这里插入图片描述

04.在ztree中获取选中的节点,and judge 是否选中的逻辑正确:
在自动加载的函数中:

 
	  $("#menuLayer")
      .on("click",".btn-confirm",doSetSelectNode)
      .on("click",".btn-cancel",doHideTree);
	  
function doSetSelectNode(){
	  //1.获取选中的节点对象
	  var nodes=zTree.getSelectedNodes();
	  if(nodes.length==1){	  
       var selectedNode=nodes[0];
       console.log("selectNode",selectedNode);
       var rowData=$("#mainContentId").data("rowData");//如果是新增,rowdata是空(在上面有提及),如果是修改,就是选中的选项去提交的修改
       if(rowData){//修改时做如下处理
      //判定当前选中的上级菜单节点是否为当前要修改节点的子节点.
    	  var flag=isChild(rowData.id,selectedNode);
    	  if(flag){
    		  alert("不能选择当前节点以及对应子节点");
    		  return;
    	  }
       }
	  //2.将对象中内容,填充到表单
	   $("#parentId").data("parentId",selectedNode.id);
	   $("#parentId").val(selectedNode.name);
      }
	  //3.隐藏树对象
	  doHideTree();
  }

其中getselectNode是ztree的函数:
在这里插入图片描述

 //判定当前选中节点是否是当前节点的子节点
  function isChild(currentNodeId,selectNode){
	 if(selectNode.id==currentNodeId)return true;
	 var node=selectNode.getParentNode();
	 if(!node)return false;//如果node是空,表示selectNode是根节点
	 return isChild(currentNodeId,node);
  }
 //zTree取消按钮事件处理函数
  function doHideTree(){
		 $("#menuLayer").css("display","none");
  }

03.提交结果,修改或者新增。
在自动加载:

  $(".box-footer")
	  .on("click",".btn-cancel",doCancel)
	  .on("click",".btn-save",doSaveOrUpdate)
function doSaveOrUpdate(){
	  //1.获取表单数据
	   var params=doGetEditFormData();
	   var rowData=
	   $("#mainContentId").data("rowData");
	  //2.异步提交表单数据(post)
	   var insertUrl="menu/doSaveObject";
	   var updateUrl="menu/doUpdateObject";
	   var url=rowData?updateUrl:insertUrl;
	   if(rowData)params.id=rowData.id;//这里是update的操作,把id获取到post提交的参数列表中。如果是新增,id是自增的,不需要添加到参数列表中
	   $.post(url,params,function(result){
			  if(result.state==1){
				  alert(result.message);
				  doCancel();
			  }else{
				  alert(result.message);
			  }
	  });
  }
  //获取表单数据
  function doGetEditFormData(){
	  var params={
	    type:$("form input[name='typeId']:checked").val(),
		name:$("#nameId").val(),
		url:$("#urlId").val(),
		sort:$("#sortId").val(),
		permission:$("#permissionId").val(),
		parentId:$("#parentId").data("parentId")
	  }
	  return params;
  }
  //编辑页面cancel事件处理
  function doCancel(){
	  //1.定义url
	  var url="menu/menu_list";
	  //2.异步加载列表页面
	  $("#mainContentId").load(url);
  }
  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/460935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

30秒预测10天全球天气,上海人工智能实验室发布气象大模型“风乌”效果超DeepMind

4月7日&#xff0c;上海人工智能实验室联合中国科学技术大学、上海交通大学、南京信息工程大学、中国科学院大气物理研究所及上海中心气象台发布全球中期天气预报大模型“风乌”。基于多模态和多任务深度学习方法构建&#xff0c;AI大模型“风乌”首次实现在高分辨率上对核心大…

Speech and Language Processing-导读

朋友们&#xff0c;最近打算做一个大工程&#xff0c;我曾多次提过&#xff0c;chatgpt未来将是一股非常大的信息技术革命&#xff0c;有的人不以为然&#xff0c;或者国内很多企业好像并不是很重视&#xff0c;以我从业多年来的经验&#xff0c;chatgpt与之前的NLP技术有着较为…

【jenkins学习】windows环境下部署与设置中文显示

准备&#xff1a; jenkins安装包&#xff1a; https://www.jenkins.io/zh/download/ Java 17安装包&#xff1a; https://www.oracle.com/java/technologies/downloads/#jdk17-windows 1、jdk安装 不建议放在C盘&#xff0c;自定义一个不含中文的路径&#xff0c;安装即可 配置…

轻松掌握K8S目录持久卷PV/PVC的kubectl操作知识点04

1、介绍 在docker中可以将容器中的目录挂载出来&#xff0c;在k8s中pod可以部署在不同节点&#xff0c;假如该节点的机器宕机了&#xff0c;k8s可能就会将此Pod转移到其他机器&#xff0c;就不是原先的机器了。k8s有自己的一套挂载方案&#xff0c;如下图所示&#xff0c; 原…

Flink通过Maxwell读取mysql的binlog发送到kafka再写入mysql

1.准备环境 JDK1.8 MySQL Zookeeper Kakfa Maxweill IDEA 2.实操 2.1开启mysql的binlog 查看binlog 状态&#xff0c;是否开启 show variables like log_% 如果log_bin显示为ON&#xff0c;则代表已开启。如果是OFF 说明还没开启。 [Linux] 编辑 /etc/my.cnf 文件&…

什么品牌台灯最舒服?推荐最热门的护眼灯品牌排行

台灯是人们生活中用来照明的一个电器&#xff0c;平时阅读跟学习时都会用来照明&#xff0c;补充室内不足的光线。 那么&#xff0c;台灯哪个品牌最舒服&#xff1f;分享几款好用的护眼台灯给大家。 (1) 南卡护眼台灯Pro 南卡是目前国内护眼效果方面做得最棒的一个品牌&#x…

企业本地文档如何实现规范在线管理?

随着企业数字化生产方式的不断推进&#xff0c;网络办公和在线协作越来越普遍&#xff0c;企业内部可能出现大量的文件和文档&#xff0c;这些文档多存在于不同的设备和存储介质上&#xff0c;这给企业的信息管理带来了一定程度的困难。为了提高企业的知识管理效率&#xff0c;…

SpringCloudTencent:安装北极星polaris服务

腾讯推出了自己的微服务框架&#xff0c;其中polaris&#xff08;北极星&#xff09;服务更是核心&#xff0c;除了提供服务发现和治理中心&#xff0c;除服务发现、服务注册和健康检查之外&#xff0c;还提供流量控制、故障容错和安全能力。现在我们试着快速安装一下。 1.win…

Java笔记_11(常见算法)

Java笔记_11常见算法 一、常见算法1.1、查找算法1.2、排序算法 二、Arrays三、Lambda表达式四、综合练习4.1、按照要求进行排序4.2、不死神兔4.3、猴子吃桃子4.4、爬楼梯 一、常见算法 1.1、查找算法 基本查找 package Common_algorithms.Basic_Search;import java.util.Ar…

IT运维:服务器管理

服务器是连接到其他设备以提供服务的设备。其他设备称为客户端&#xff0c;此设置称为客户端-服务器模型。 服务器提供的服务包括存储数据、托管网站、运行应用程序、中继信息和执行计算。任何向发出请求的客户端提供服务的设备都可以充当服务器&#xff0c;但大型IT组织通常具…

笔试练习Day01

目录 选择题&#xff1a; 题一&#xff1a; String 类&#xff1a; StringBuffer 类的详解&#xff1a; 关于 Vector 的详解&#xff1a; 编程题&#xff1a; 题一&#xff1a;组队竞赛 题二&#xff1a;删除公共字符串 选择题&#xff1a; 题一&#xff1a; String 类…

node(express框架)连接mysql 基础篇

文章目录 电脑安装mysql配置mysql连接mysql 创建表 创建node文件启动node node 连接数据库连接数据库 电脑安装mysql 由于我的是mac 我就安装mac版本的 mysql 如已安装跳过此步骤 mysql官网选择版本安装配置 这里注意选择下面的 next输入mysql密码 点击finish 配置mysql 打…

ROS:TF变换

一.TF变换数据格式&#xff08;msg&#xff09; TransformStamped.msg&#xff08;两个坐标系之间转换&#xff09; std_msgs/Header header uint32 seq time stamp string frame_id 指明哪一个坐标系&#xff08;父坐标系&#xff09; string child_f…

汇编语言(第3版) - 学习笔记 - 实验8 分析一个奇怪的程序

实验8 分析一个奇怪的程序 题目解析顺序执行查看反汇编测试一下 题目 分析下面的程序&#xff0c;在运行前思考:这个程序可以正确返回吗? 运行后再思考:为什么是这种结果? 通过这个程序加深对相关内容的理解。 assume cs:codesg codesg segmentmov ax, 4c00h int 21h …

BUUCTF pwn1_sctf_2016

小白垃圾笔记而已&#xff0c;不建议阅读。 唉&#xff0c;因为没有在一开始创建flag文件&#xff0c;导致调试了半天也没有找到问题所在。 这道题是这样的&#xff1a; main函数调用vuln函数 其实在程序中还有一个get_flag函数&#xff1a; 我们可以将返回地址覆盖成它。 覆…

E. Number With The Given Amount Of Divisors

传送门 题意&#xff1a;求出整好有n个因子的最小整数。 思路&#xff1a; 要找到恰好有n个因子的最小整数&#xff0c;我们可以利用质因数分解的思想来求解。设该整数的质因数分解式为&#xff1a;其中p1,p2,...,pn均为不同的质数&#xff0c;a1,a2,...,an均为正整数。则该整…

【vue3】05-vue的双向绑定 — v-model

文章目录 v-mdelv-model的基本使用v-model绑定其他表单元素textareaselectcheckboxradio v-model修饰符 v-mdel v-model 是 Vue.js 中用于表单元素和组件双向数据绑定的指令。它可以将表单元素或组件的值和 Vue 实例的数据属性进行双向绑定: 即当表单元素或组件的值发生变化时…

Ajax 实例

文章目录 AJAX 实例AJAX 实例解析 AJAX 实例 为了帮助您理解 AJAX 的工作原理&#xff0c;我们创建了一个小型的 AJAX 应用程序: 实例 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <script> function loadXMLDoc() {var x…

第五期(2022-2023)传统行业云原生技术落地调研报告——金融篇

随着数字化浪潮的来临&#xff0c;云原生技术正在改变着各行各业&#xff0c;通过IT变革驱动业务创新发展&#xff0c;促进企业自身以及产业生态的转型升级。 因此&#xff0c;灵雀云联合云原生技术实践联盟&#xff08;CNBPA&#xff09;和行业内头部厂商F5&#xff0c;共同发…

如何实现一款接入chatGPT的智能音箱

现有的一些“智能音箱”如某度和某猫精灵&#xff0c;跟现在的chatGPT比显得智障。如果能有一款接入chatGPT的智能音箱&#xff0c;它的交互性就好多啦。有gpt加持的智能音箱绝对会很强&#xff0c;以下提供探讨下实现思路。 目前智能音箱在语音交互层面依然不够成熟&#xff0…