S2SH+JQuery ztree生成三级级联树形列表菜单
- 格式:doc
- 大小:26.00 KB
- 文档页数:4
三级级联下拉菜单的实现流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 设计 HTML 结构创建三个下拉菜单,分别用于选择一级、二级和三级选项。
基于jquery实现三级下拉菜单本⽂实例为⼤家分享了jquery三级下拉菜单的具体实现代码,供⼤家参考,具体内容如下在写这个的时候,⾸先要捋顺思路。
点⼀个菜单的时候,其他的要闭合,点⼀级菜单的时候,⼆三级菜单要闭合,等等。
⼤致代码如下:<body><aside><ul class="one"><li> <a href="#" class="a">⽬录A</a><ul class="two" style="display: none"><li><a href="#" class="a">⼆级⽬录A</a><ul class="three" style="display: none"><li><a href="#">三级⽬录A</a></li></ul></li><li><a href="#" class="a">⼆级⽬录B</a></li><li><a href="#" class="a">⼆级⽬录C</a></li></ul></li><li> <a href="#" class="a">⽬录B</a><ul class="two" style="display: none"><li><a href="#" class="a">⼆级⽬录A</a><ul class="three" style="display: none"><li><a href="#">三级⽬录A</a></li></ul></li><li><a href="#" class="a">⼆级⽬录B</a></li><li><a href="#" class="a">⼆级⽬录C</a></li></ul></li><li> <a href="#" class="a">⽬录C</a> </li></ul></aside>//jQuery部分<script src="js/jquery-1.8.3.min.js"></script><script>$(document).ready(function() {$('.a').click(function() {if ($(this).siblings('ul').css('display') == 'none') {$(this).siblings('ul').slideDown(100).children('li');if ($(this).parents('li').siblings('li').children('ul').css('display') == 'block') {$(this).parents('li').siblings('li').children('ul').slideUp(100);}} else {//控制⾃⾝菜单下⼦菜单隐藏$(this).siblings('ul').slideUp(100);//控制⾃⾝菜单下⼦菜单隐藏$(this).siblings('ul').children('li').children('ul').slideUp(100);}});});</script></body>。
三级级联下拉菜单的实现流程1.首先,我们需要在页面上创建三个下拉菜单元素。
First, we need to create three drop-down menu elements on the page.2.然后,我们要填充第一个下拉菜单,以显示第一级的选项。
Then, we will populate the first drop-down menu to display the options for the first level.3.接着,我们需要为第一个下拉菜单添加一个事件监听器,以便在选择其中一个选项时触发下一个菜单的更新。
Next, we need to add an event listener to the first drop-down menu, so that selecting an option triggers an update to the next menu.4.然后,我们将填充第二个下拉菜单,以显示第二级的选项。
Then, we will populate the second drop-down menu to display the options for the second level.5.接下来,我们需要为第二个下拉菜单添加事件监听器,以便在选择其中一个选项时触发第三个菜单的更新。
After that, we need to add an event listener to thesecond drop-down menu, so that selecting an option triggersan update to the third menu.6.然后,我们将填充第三个下拉菜单,以显示第三级的选项。
Next, we will populate the third drop-down menu todisplay the options for the third level.7.最后,当用户选择完最后一级的选项后,我们可以获取所选择的值并进行相应的处理。
Jquery动态生成树形列表实现思路:使用ajax方式发送请求→服务端从数据库中取出结构列表,生成xml文档,回发给客户端→客户端接收到xml数据,进行解析,生成列表,并配置列表样式。
客户端代码:function GetTreeView(odiv) {//odiv为要加载树形控件的div$.ajax({async: false,type: "GET",url: "../Page_Ajax/RS_TreeView.aspx",dataType: "xml",success: function(xmldata) {//新建列表项var ou = $("<ul></ul>").appendTo(odiv);//*//获取factory节点var f = $(xmldata).find("Factory:first");var lfactory = $("<li></li>").appendTo(ou);var dfactory = $("<div></div>").appendTo(lfactory);var ifactory = $("<img src=''/>").appendTo(dfactory);var ifactory2 = $("<img src=''/>").appendTo(dfactory);var sfactory = $("<span></span>").appendTo(dfactory);//设置节点属性$(sfactory).attr("id", $(f).attr("id"));$(sfactory).text($(f).attr("name"));$(dfactory).width($(sfactory).text().length * 15 + 35);//根据数据长度计算div宽度$(sfactory).bind("click", function() {//绑定点击事件});var ufactory = $("<ul></ul>").appendTo(lfactory);//遍历Area节点$(f).find("Area").each(function() {var larea = $("<li></li>").appendTo(ufactory);var darea = $("<div></div>").appendTo(larea);var iarea = $("<img src=''/>").appendTo(darea);var iarea2 = $("<img src=''/>").appendTo(darea);var sarea = $("<span></span>").appendTo(darea);$(sarea).attr("id", $(this).attr("id"));$(sarea).text($(this).attr("name"));$(darea).width($(sarea).text().length * 15 + 35);$(sarea).bind("click", function() {});var uarea = $("<ul></ul>").appendTo(larea);//遍历Team节点$(this).find("Team").each(function() {var lteam = $("<li></li>").appendTo(uarea);var dteam = $("<div></div>").appendTo(lteam);var iteam = $("<img src=''/>").appendTo(dteam);var iteam2 = $("<img src=''/>").appendTo(dteam);var steam = $("<span></span>").appendTo(dteam);$(steam).attr("id", $(this).attr("id"));$(steam).text($(this).attr("name"));$(dteam).width($(steam).text().length * 15 + 35);//绑定单击事件$(steam).bind("click", function() {});var uteam = $("<ul></ul>").appendTo(lteam);//遍历Well节点$(this).find("Well").each(function() {var lwell = $("<li></li>").appendTo(uteam);var dwell = $("<div></div>").appendTo(lwell);var iwell = $("<imgsrc='../Img/treeico/37.png'/>").appendTo(dwell);var swell = $("<span></span>").appendTo(dwell); $(swell).attr("id", $(this).attr("id"));$(swell).text($(this).attr("name"));$(dwell).width($(swell).text().length * 15 + 35);$(swell).bind("click", function() {});});});});//设置样式ou.css("padding-left", "15px");ou.css("margin", "0px");ou.css("margin-top", "3px");var ul = $(ou).find("ul");var li = $(ou).find("li");ul.css("padding-left", "20px");ul.css("padding-top", "5px");ul.css("margin-left", "0px");li.css("margin-left", "0px");li.css("list-style-type", "none");li.css("cursor", "pointer");ou.find("li:has(ul)").find("span").css("font-family", "微软雅黑").css("font-size", "14px");ou.find("li:has(ul)").find("span").hover(function() {$(this).css("color", "#0000ff").css('text-decoration', 'underline');},function() {$(this).css("background-color", "#ffffff").css("color","#000000").css('text-decoration', 'none');});//默认各节点展开,设置图片ou.find("li:has(ul)").find("div img:first").attr("src","../Img/treeico/minus.gif").css('');ou.find("li:has(ul)").find("div img:nth-child(2)").attr("src","../Img/treeico/Open.png");//设置展开收缩事件li.find("ul").prev().find('img').click(function() {$(this).parent().next().toggle();if ($(this).attr("src") == "../Img/treeico/minus.gif") {$(this).attr("src", "../Img/treeico/plus.gif");$(this).next().attr("src", "../Img/treeico/folder.png");}else if ($(this).attr("src") == "../Img/treeico/plus.gif") {$(this).attr("src", "../Img/treeico/minus.gif");$(this).next().attr("src", "../Img/treeico/Open.png");}else if ($(this).attr("src") == "../Img/treeico/Open.png") { $(this).prev().attr("src", "../Img/treeico/plus.gif");$(this).attr("src", "../Img/treeico/folder.png");}else if ($(this).attr("src") == "../Img/treeico/folder.png") { $(this).prev().attr("src", "../Img/treeico/minus.gif");$(this).attr("src", "../Img/treeico/Open.png");}});}});}服务器端代码(RS_TreeView.aspx):protected void Page_Load(object sender, EventArgs e){XmlDocument xmlDoc = new XmlDocument();XmlElement eRoot = xmlDoc.CreateElement("Factory");eRoot.SetAttribute("id", "factory");eRoot.SetAttribute("name", "采油厂");xmlDoc.AppendChild(eRoot);Factory f = new Factory();f.GetAreaList();foreach (Area a in f.AreaList){XmlElement eArea = xmlDoc.CreateElement("Area");eArea.SetAttribute("id", a.ID);eArea.SetAttribute("name", );eRoot.AppendChild(eArea);a.GetTeamList();foreach (Team t in a.TeamList){XmlElement eTeam = xmlDoc.CreateElement("Team");eTeam.SetAttribute("id", t.ID);eTeam.SetAttribute("name", );eArea.AppendChild(eTeam);t.GetWellList();foreach (Node w in t.WellList){XmlElement eWell = xmlDoc.CreateElement("Well");eWell.SetAttribute("id",w.ID.ToString());eWell.SetAttribute("name",);eTeam.AppendChild(eWell);}}}ResponseXML(xmlDoc.OuterXml);}private void ResponseXML(string xml){Response.ContentType = "text/xml";Response.Charset = "utf-8";Response.Clear();Response.Write("<?xml version=\"1.0\" encoding=\"utf-8\"?>");Response.Write(xml);Response.End();}其中:Factory等是自定义的类,GetAreaList等方法是类中自定义的方法,生成xml文档的代码,可以自行编写。
S2SH+JQuery ztree生成三级级联树形列表菜单1.LoadZTreeAction.javapublic LoadZTreeAction() extends ActionSupport{private static final long serialVersionUID = 4258282097802772367L;private OneDAO oneDAO;private TwoDAO twoDAO;private ThreeDAO threeDAO;//Generate getters and setters//为了提高程序效率,先加载二级级联菜单,当点击子菜单时再动态添加下一级public String loadZTree(){JSONArray jsonArray = new JSONArray();JSONObject one = new JSONObject();JSONObject two = new JSONObject();List<One> listOne = oneDAO.findAll();for(One oTemp:listOne){int pID = -1;one.put("id",oTemp.getID());one.put("pID",pID);one.put("name",oTemp.getName());one.put("url","");one.put("target","rightFrame");jsonObject.add(one);List<Two> listTwo = twoDAO.findByOneId(oTemp.getID());for(Two tTemp : listTwo){two.put("id",tTemp.getID());two.put("pID",oTemp.getID());two.put("name",tTemp.getName());two.put("url","");two.put("target","rightFrame");jsonObject.add(two);}}return null;}public String loadSonTree(){HttpServletRequest request = ServletActionContext.getRequest();HttpServletResponse response = ServletActionContext.getResponse();response.setCharacterEncoding("utf-8");response.contentType("html/text");JSONArray jsonArray = new JSONArray();JSONObject obj = new JSONObject();String twoID = request.getParameter("twoID");List<Three> listThree = threeDAO.findByTwoId(twoID);for(Three thTemp : listThree){obj.put("id",thTemp.getID());obj.put("pId",twoID);obj.put("name",thTemp.getName());obj.put("url","");obj.put("target","rightFrame");jsonArray.add(obj);}try{PrintWriter out = response.getWriter();out.print(jsonArray);out.flush();out.close();}catch(IOException ioe){ioe.printStackTrace();}return null;}}2.struts.xml<package name="test" namespace="/json" extends="json-default"><action name="loadZTree" class="LoadZTreeListAction" method="loadZTree"></action> <action name="loadSonTree" class="LoadZTreeListAction"method="loadSonTree"></action></package>3.applicationContext.xml<bean name="loadZTreeListAction" class="com.action.LoadZTreeAction"><property name="oneDAO"><ref bean="OneDAO"></property><property name="TwoDAO"><ref bean="TwoDAO"></property><property name="ThreeDAO"><ref bean="ThreeDAO"></property></bean>4.test.jsvar setting = {async: {enable: true,url: "json/loadZTree.action",autoParam: ["id"]},asyncParamOther: [],expandSpeed: fast,data: {simpleData: {enable: true,idKey: "id",pIdKey: "pId",rootPid: "-2"}},callback: {onClick: treeNodeClick}};$(document).ready(function() {$.fn.zTree.init($("#treeDemo"), setting);});function treeNodeClick(event,treeId,treeNode){twoID = treeNode.id;var params = {"twoID": twoID};$.ajax({url: "json/loadSonTree.action",type: "post",dataType: "json",data: params,cache: false,error: function(e){e.getMessage();},success: function(jsonArray){var treeObj = $.fn.zTree.getZTreeObj("treeDemo");var newNodes = jsonarray;treeObj.addNodes(treeNode, newNodes);}});}5.test.jsp<link rel="stylesheet" href="css/zTreeStyle/myzTreeStyle.css" type="text/css"></link><script type="text/javascript" src="./js/jquery-1.8.2.js"></script><script type="text/javascript" src="js/jquery.ztree.core-3.4.js" charset="UTF-8"></script> <script type="text/javascript" src="js/test.js" charset="UTF-8"></script>...<body><div><ul id="treeDemo" class="ztree"></ul></div></body>。
jQuery实现多级列表(树形菜单)<style>ul{list-style:none;margin:0px;padding:0px;}ul li{margin-left:15px;}ul li a{display:block;height:30px;width:80px;line-height:30px;text-decoration:none;padding-left:15px;}.no{display:none;}.yes{display:block;}.page{background:url("../img/page.png") no-repeat left center;}.plus{background:url("../img/plus.png") no-repeat left center;}.minus{background:url("../img/minus.png") no-repeat left center;}</style><script type="text/javascript" src="../jq/jquery-1.12.4.js"></script><script>$(function(){$("li").each(function(){if($(this).children("ul").size()>0)//判断li下是否有ul列表{//如果有隐藏ul,添加样式$(this).children("ul").eq(0).css("display","none");$(this).children("a").first().addClass("plus");//点击⼀级列表$("a").click(function(){//判断ul是否隐藏if($(this).parent().children("ul").first().css("display")=="none"){$(this).parent().children("ul").first().css("display","block");$(this).removeClass();$(this).addClass("minus");}else{$(this).parent().children("ul").first().css("display","none");$(this).removeClass();$(this).addClass("plus");}})}else{$(this).children("a").eq(0).addClass("page");}})})</script></head><body><ul><li><a href="#">⼀级菜单1</a><ul><li><a href="#">⼀级菜单1</a><ul><li><a href="#">⼀级菜单1</a></li> <li><a href="#">⼀级菜单1</a></li> </ul></li><li><a href="#">⼀级菜单1</a></li> </ul></li><li><a href="#">⼀级菜单1</a><ul><li><a href="#">⼀级菜单1</a></li> <li><a href="#">⼀级菜单1</a></li> </ul></li></ul></body></html>。
jQuery实现简单三级联动效果本⽂实例为⼤家分享了jQuery实现简单三级联动的具体代码,供⼤家参考,具体内容如下⾸先写⼀个JSON数据[{"province": "吉林省","cities": [{"city": "长春市","counties": ["朝阳区", "经济开发区", "⾼新区"]},{"city": "吉林市","counties": ["东城区", "经济开发区", "⽼城区"]},{"city": "⽩⼭市","counties": ["⼆道区", "河东区", "⾼新区"]}]},{"province": "辽宁省","cities": [{"city": "沈阳市","counties": ["朝阳区", "经济开发区", "⾼新区"]},{"city": "⼤连市","counties": ["东城区", "经济开发区", "⽼城区"]},{"city": "铁岭市","counties": ["⼆道区", "河东区", "⾼新区"]}]},{"province": "⼭东省","cities": [{"city": "青岛市","counties": ["朝阳区", "经济开发区", "⾼新区"]},{"city": "济南市","counties": ["东城区", "经济开发区", "⽼城区"]},{"city": "威海市","counties": ["⼆道区", "河东区", "⾼新区"]}]}]然后⽤Ajax动态获取JSON⽂件中的数据完整代码<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>三级联动</title></head><body><!-- 三级联动 - 两个⼆级联动 --><select id="province"><option value="">---</option></select><select id="city"><option value="">---</option></select><select id="county"><option value="">---</option></select><script src="js/jquery-1.12.4.js"></script><script src="../js/createXMLHttpRequest.js"></script><script>var $province = $("#province");var $city = $("#city");var $county = $("#county");var json;$.getJSON("data/server1.json", function (data) {// 把data保存到json全局变量中json = data;// 遍历data数据$.each(data, function (index, obj) {// 获取所有的省份信息var provinceName = obj.province;// console.log(provinceName);// 将省份信息添加到对应的select元素中$province.append(`<option value="${provinceName}">${provinceName}</option>`);});$province.change(function () {// 将城市下拉列表的选项清空$city.empty();$city.append(`<option value="">---</option>`);// 获取到所选择的城市的⽂本信息var provinceElementName = $(this).children("option:selected").text();// console.log(provinceElementName);$.each(json, function (index, obj) {var provinceName = obj.province;// console.log(provinceName);if (provinceElementName === provinceName) {// 获取到城市数组集合var cities = obj.cities;// 遍历城市数组集合$.each(cities, function (index, obj) {// console.log(obj.city);// 获取到城市名称var cityName = obj.city;// 将该省对应的城市名称添加到对应的select中$city.append(`<option value="${cityName}">${cityName}</option>`);});}});});$city.change(function () {// 将区级下拉列表的选项清空$county.empty();$county.append(`<option value="">---</option>`);// 获取到所选择的城市的⽂本信息var cityElementName = $(this).children("option:selected").text();// console.log(cityElementName);$.each(json, function (index, obj) {// 获取该省对应的所有的城市信息var cities = obj.cities;// console.log(cities);$.each(cities, function (index, cityObj) {// console.log(cityObj.city);var cityName = cityObj.city;if (cityElementName === cityName) {// 获取到区级数组集合// console.log(cityObj.counties);var counties = cityObj.counties;// 遍历区级数组集合$.each(counties, function (index, value) {// 获取到区级名称// console.log(value);// 将该城市对应的区级名称添加到对应的select元素中$county.append(`<option value="${value}">${value}</option>`);});}});});});});</script></body></html>效果如下以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
JQ三级联动的写法今天和⼤家分享下三级联动的写法思路:1.通过AJAX获取到json⽂件⾥的数据,GET⽅法 2.在获取到的数据⾥找到省份添加到下拉菜单中 3.当省份标签被改变时change事件通过当前省份与市的共同数组下标找到对应的市区;实例:HTML<!DOCTYPE html><html><head><script src="js/jquery-3.3.1.js"></script><meta charset="UTF-8"><title></title></head><body><select id="province">//创建省份下拉菜单<option>--省份--</option></select><select id="city">//创建市下拉菜单<option>--市--</option></select><select id="code">//创建邮编下拉菜单<option>--邮编--</option></select></body></html> JQ 第⼀级联动省份<script>//----------------------------联动第⼀级-------------------------------------------------------$.get("js/city.json",function(data,status){//通过GET⽅法获取到json⽂件⾥的数据$(data.城市代码).each(function(i,el){ //通过JQ循环遍历数据var str = "<option value=" + i + ">" + data.城市代码[i].省 + "</option>"//把data的省份数据添加到下拉菜单中 $("#province").append(str);//添加option标签})})</script> 第⼆级联动市区:当省级下拉菜单被改变时触发change事件实现⼆级联动<script>$.get("js/city.json",function(data,status){//通过GET⽅法获取到json⽂件⾥的数据var provinceId = null;//纪录共同的数组下标值//----------------------------联动第⼀级-------------------------------------------------------$(data.城市代码).each(function(i,el){ //通过JQ循环遍历数据var str = "<option value=" + i + ">" + data.城市代码[i].省 + "</option>"//把data的省份数据添加到下拉菜单中 $("#province").append(str);//添加option标签});//----------------------------联动第⼆级-------------------------------------------------------$("#province").change(function(){//当省级下拉菜单被改变触发change事件$("#city").html("<option>--市--</option>");//当省级下拉菜单被改变时清空市级下拉菜单$("#code").html("<option>--邮编--</option>");//当省级下拉菜单被改变时清空邮编下拉菜单provinceId = $("#province").val();//获取到省和市的共同数组下标$(data.城市代码[provinceId].市).each(function(index,ele){//循环共同数组的市var str = "<option>" + ele.市名 + "</option>"//把data的市数据添加到下拉菜单中$("#city").append(str);//添加option标签})});</script> 第三级联动邮编:当市级级下拉菜单被改变时触发change事件实现三级联动<script>$.get("js/city.json",function(data,status){//通过GET⽅法获取到json⽂件⾥的数据var provinceId = null;//纪录共同的数组下标值//----------------------------联动第⼀级-------------------------------------------------------$(data.城市代码).each(function(i,el){ //通过JQ循环遍历数据var str = "<option value=" + i + ">" + data.城市代码[i].省 + "</option>"//把data的省份数据添加到下拉菜单中 $("#province").append(str);//添加option标签});//----------------------------联动第⼆级-------------------------------------------------------$("#province").change(function(){//当省级下拉菜单被改变触发change事件$("#city").html("<option>--市--</option>");//当省级下拉菜单被改变时清空市级下拉菜单$("#code").html("<option>--邮编--</option>");//当省级下拉菜单被改变时清空邮编下拉菜单provinceId = $("#province").val();//获取到省和市的共同数组下标$(data.城市代码[provinceId].市).each(function(index,ele){//循环共同数组的市var str = "<option>" + ele.市名 + "</option>"//把data的市数据添加到下拉菜单中$("#city").append(str);//添加option标签})});//----------------------------联动第三级-------------------------------------------------------$("#city").change(function(){$("#code").html("");$(data.城市代码[provinceId].市).each(function(index,ele){if($("#city").val()==ele.市名){console.log(ele.编码);var str = "<option>" + ele.编码 + "</option>"//把data的省份数据添加到下拉菜单中$("#code").append(str);//添加option标签}})})})</script>。
简单实现jQuery级联菜单本⽂实例为⼤家分享了jQuery实现级联菜单的具体代码,供⼤家参考,具体内容如下层叠样式表:.button {border: 1px ridge #ffffff;line-height:18px;height: 20px;width: 45px;padding-top: 0px;background:#CBDAF7;color:#000000;font-size: 9pt;}HTML正⽂:<div style="border:1px dashed #E6E6E6;margin:150px 0px 0px 450px; width:280px; height:200px; background-color:#E6E6E6;"> <table width="285" height="169" border="0" align="left" cellpadding="0" cellspacing="0" style="margin:15px 0px 0px 15px;"><tr><td width="126"><select name="first" size="10" multiple="multiple" class="td3" id="first"><option value="选项1">选项1</option><option value="选项2">选项2</option><option value="选项3">选项3</option><option value="选项4">选项4</option><option value="选项5">选项5</option></select></td><td width="69" valign="middle"><input name="add" id="add" type="button" class="button" value="-->" /><input name="add_all" id="add_all" type="button" class="button" value="==>" /><input name="remove" id="remove" type="button" class="button" value="<--" /><input name="remove_all" id="remove_all" type="button" class="button" value="<==" /></td><td width="127" align="left"><select name="second" size="10" multiple="multiple" id="second"><option value="选项6">选项6</option></select></td></tr></table>Javascript操作代码:$(document).ready(function(){$("#add").click(function(){$("#first option:selected").appendTo($("#second"));});$("#add_all").click(function(){$("#first option").appendTo($("#second"));});$("#remove").click(function(){$("#second option:selected").appendTo($("#first"));});$("#remove_all").click(function(){$("#second option").appendTo($("#first"));});});效果:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
jQuery利⽤ztree实现树形表格的实例代码最近公司的项⽬中要做⼀个树形表格,因为之前⼀直在⽤ztree实现基本的树形结构,理所当然的⾸先想到利⽤ztree来做。
⽹上找了⼀下别⼈做的树形表格,有使⽤ztree的,也有使⽤treeTable的,但效果都不太好,于是参考使⽤ztree的做法⾃⼰做了⼀个,贴出来供⼤家参考,请看注释说明,效果如下所⽰。
<!DOCTYPE HTML><html><head><link href="https:///zTree.v3/3.5.29/css/zTreeStyle/zTreeStyle.min.css" rel="external nofollow" rel="stylesheet"><script src="https:///jquery/3.2.1/jquery.min.js"></script><script src="https:///zTree.v3/3.5.29/js/jquery.ztree.all.min.js"></script><style>body {overflow: auto;}.ztree *{font-family: "微软雅⿊","宋体",Arial, "Times New Roman", Times, serif;}.ztree {padding: 0;border-left: 1px solid #E3E3E3;border-right: 1px solid #E3E3E3;border-bottom: 1px solid #E3E3E3;}.ztree li a {vertical-align: middle;height: 32px;padding: 0px;}.ztree li > a {width: 100%;}.ztree li a.curSelectedNode {padding-top: 0px;background-color: #FFE6B0;border: 1px #FFB951 solid;opacity: 1;height: 32px;}.ztree li ul {padding-left: 0px}.ztree div.divTd span {line-height: 30px;vertical-align: middle;}.ztree div.divTd {height: 100%;line-height: 30px;border-top: 1px solid #E3E3E3;border-left: 1px solid #E3E3E3;text-align: center;display: inline-block;color: #6c6c6c;overflow: hidden;}.ztree div.divTd:first-child {text-align: left;text-indent: 10px;border-left: none;}.ztree .head {background: #E8EFF5;}.ztree .head div.divTd {color: #393939;font-weight: bold;}.ztree .ck{padding: 0 5px;margin: 2px 3px 7px 3px;}li:nth-child(odd){background-color:#F5FAFA;}li:nth-child(even){background-color:#FFFFFF;}</style></head><body><div class="layer"><div id="tableMain"><ul id="dataTree" class="ztree"></ul></div></div></body></html><script type="text/javascript">var newOpen =null;$(function () {//初始化数据var data = [{"id":"20170525091439001010","name":"企业注册","pId":null,"status":"1","typecode":"02"},{"id":"20170724174119005610","name":"部门沟通演练","pId":"20170525091439001010","status":"1","typecode":"2"},{"id":"20170725085455000110","name":"测 queryHandler(data);});var setting = {view: {showLine: false,addDiyDom: addDiyDom,},data: {simpleData: {enable: true}}};/*** ⾃定义DOM节点*/function addDiyDom(treeId, treeNode) {var spaceWidth = 15;var liObj = $("#" + treeNode.tId);var aObj = $("#" + treeNode.tId + "_a");var switchObj = $("#" + treeNode.tId + "_switch");var icoObj = $("#" + treeNode.tId + "_ico");var spanObj = $("#" + treeNode.tId + "_span");aObj.attr('title', '');aObj.append('<div class="divTd swich fnt" style="width:60%"></div>');var div = $(liObj).find('div').eq(0);//从默认的位置移除switchObj.remove();spanObj.remove();icoObj.remove();//在指定的div中添加div.append(switchObj);div.append(spanObj);//隐藏了层次的spanvar spaceStr = "<span style='height:1px;display: inline-block;width:" + (spaceWidth * treeNode.level) + "px'></span>";switchObj.before(spaceStr);//图标垂直居中icoObj.css("margin-top","9px");switchObj.after(icoObj);var editStr = '';//宽度需要和表头保持⼀致editStr += '<div class="divTd" style="width:20%">' + (treeNode.typecode == null ? '' : treeNode.typecode ) + '</div>';editStr += '<div class="divTd" style="width:10%">' + (treeNode.status == '1' ? '有效' : '⽆效' ) + '</div>';editStr += '<div class="divTd" style="width:10%">' + opt(treeNode) + '</div>';aObj.append(editStr);}//初始化列表function queryHandler(zTreeNodes){//初始化树$.fn.zTree.init($("#dataTree"), setting, zTreeNodes);//添加表头var li_head = ' <li class="head"><a><div class="divTd" style="width:60%">类型名称</div><div class="divTd" style="width:20%">类型编码</div>' +'<div class="divTd" style="width:10%">是否有效</div><div class="divTd" style="width:10%">操作</div></a></li>';var rows = $("#dataTree").find('li');if (rows.length > 0) {rows.eq(0).before(li_head)} else {$("#dataTree").append(li_head);$("#dataTree").append('<li ><div style="text-align: center;line-height: 30px;" >⽆符合条件数据</div></li>')}}function opt(treeNode) {var htmlStr = '';htmlStr += '<input type="button" class="ck" onclick="doEdit(\'' + treeNode.tId + '\',\'' + treeNode.id + '\')" value="编辑"/>';htmlStr += '<input type="button" class="ck" onclick="doDelete(\'' + treeNode.tId + '\',\'' + treeNode.id + '\', \'' + + '\')" value="删除"/>';return htmlStr;}总结以上所述是⼩编给⼤家介绍的jQuery 利⽤ztree实现树形表格的实例代码,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
JQuery实现动态生成树形菜单有一个需求:菜单导航条需要依据不同的权限动态提取出来。
计划是将功能模块与用户权限之间的关系保持到一个配置表中。
所以功能菜单的话就需要动态提取出来再显示。
借助JQuery框架实现一段动态菜单显示的方案。
一、学习一款它的插件TreeView这个插件能够把无序列表转换成可展开与收缩的Tree。
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><script src="/jquery-latest.js"></script><link rel="stylesheet"href="screen.css"type="text/css"/> <link rel="stylesheet"href="jquery.treeview.css"type="text /css"/><script type="text/javascript"src="jquery.treeview.js"></sc ript><script>$(document).ready(function(){$("#example").treeview();});</script></head><body><ul id="example"class="filetree"><li><span class="folder">Folder 1</span><ul><li><span class="file">Item 1.1</span></li></ul></li><li><span class="folder">Folder 2</span><ul><li><span class="folder">Subfolder 2.1</span><ul><li><span class="file">File 2.1.1</span></li><li><span class="file">File 2.1.2</span></li></ul></li><li><span class="file">File 2.2</span></li></ul></li><li class="closed"><span class="folder">Folder 3 (closed at start)</span><ul><li><span class="file">File 3.1</span></li></ul></li><li><span class="file">File 4</span></li></ul></body></html>可以参考:/Plugins/Treeview。
使⽤zTree控件制作的表格形式的树形+数据菜单測试了⼀下,兼容ie7以上,chromeoperaff不使⽤对⽅css/*-------------------------------------zTree Styleversion: 3.4author: Hunter.zemail: hunter.z@website: /p/jquerytree/-------------------------------------*/.ztree .clear:after{ content:"."; display:block; height:0; clear:both; visibility:hidden; }.ztree .clear{ zoom:1; }.ztree .fleft{float:left; }.ztree .fright{float:right; }.ztree li{vertical-align:bottom/*ie7 bug*/;}.ztree,.ztree ul,.ztree li{padding: 0px;margin: 0px;display: block;width: 100%;}.ztree table{border-collapse:collapse;width:100%;border-spacing:0;border: 1px solid #bcbcbc;}.ztree .tableA{display: block;width: 100%;color: black;text-decoration:none;cursor: default;}.ztree .tableA:hover{background-color: #fafafa;}.ztree a.tableA:focus {outline:none!important;}.ztree table td{text-align:center;padding: 10px;}.ztree .td1{width:40%;}.ztree td.cline{border-left: 1px solid #bcbcbc;border-right: 1px solid #bcbcbc;}.ztree .td2{width:10%;}.ztree .td3{width:10%;}.ztree .td4{width:10%;}.ztree .td5{width:10%;}.ztree .td6{width:10%;}.ztree .td7{width:10%;}.ztree .ztitle td{background-color: #fafafa;height: 40px;}.ztree .ztitle .td1 .box{position: relative;width: 100%;height: 100%;}.ztree .ztitle .td1 .plb{position: absolute;left:40px;bottom: 0px;white-space: nowrap;}.ztree .ztitle .td1 .ptr{position: absolute;right:40px;top: 0px;white-space: nowrap;}.ztree .data {border-top:0px none;}.ztree .data .td1{text-align: left;}.ztree .data .break{white-space: normal;word-wrap: break-word;word-break: break-all;}.ztree .data .switch{cursor: pointer; text-align:left;}.ztree .data .switch{background:no-repeat 10px center; padding-left: 25px; }.ztree .data .center_open{background-image:url(./img/show.png); }.ztree .data .center_close {background-image:url(./img/hide.png); }.ztree .data .center_docu {background-image:url(./img/child.png); }html代码<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>主动流失率</title><script src="static/sea-modules/seajs/seajs/2.3.0/sea.js"></script><script src="static/sea-modules/seajs/seajs-css.js"></script><script>seajs.config({base:'./static/sea-modules/',alias: {"$": "jquery/jquery-ext/1.0.0/jquery-ext.js"}});</script><style type="text/css">.test{width:200px;}</style></head><body><ul class="ztree"><li><a class="tableA" href="javascript:void(0);"><table class="ztitle"><tr><td class="td1"><div class="box"><div class="plb">姓名</div><div class="ptr">信息</div></div></td><td class="td2 cline">所在单位</td><td class="td3">岗位</td><td class="td4 cline">上次九宫格位置</td><td class="td5">360測评排名</td><td class="td6 cline">直接下属</td><td class="td7">直接汇报⼈数</td></tr></table></a></li></ul><ul id="tree" class="ztree zdata"></ul><script type="text/tpl" id="ztreeTPL"><a class="tableA" href="javascript:void(0);"><table class="data"><tr><td class="td1"><span style="margin-left:{{marginLeft}}px;" id="{{this.tId}}_switch" class="button level{{this.level}} switch {{#if this.isParent}}{{#if this.open}}center_open{{else}}center_close{{/if}}{{else}}center_docu{{/if}}" treenode_switch="">{{ <td class="td2 cline break">所在单位</td><td class="td3 break">{{this.constructor}}</td><td class="td4 cline break">上次九宫格位置</td><td class="td5 break">{{this.constructor}}</td><td class="td6 cline break">直接下属</td><td class="td7 break">{{this.constructor}}</td></tr></table></a></script><script type = "text/javascript" >e(['jquery/zTree/3.0.0/main','gallery/handlebars/1.0.2/handlebars'],function($,tpl){ var zNodes =[{name:'',children: [{ name:''},{ name:'',children: [{ name:''},{ name:''}]},{ name:'', isParent:true}]},{ name:''},{ name:'',isParent:true}];var setting = {view:{addDiyDom: function(rootId,nodeObj) {console.log(arguments);nodeObj.marginLeft = 20 * nodeObj.level;var html = $('#ztreeTPL').html();html = pile(html)(nodeObj);$("#" + nodeObj.tId).html(html);},showIcon:0,showTitle:0,showLine:0,selectedMulti:0,txtSelectedEnable:0}};$.fn.zTree.init($("#tree"), setting, zNodes);});</script></body></html>。
使⽤ztree展⽰树形菜单结构⼀、功能简介在权限系统中,实现给⾓⾊指定菜单权限的功能。
主要包括以下⼏点:读取全部菜单项,并以树形结构展现;勾选⾓⾊拥有的菜单权限,保存⼊库;重新编辑⾓⾊权限时,默认选中⾓⾊已有的菜单权限。
⼆、界⾯三、实现过程1.在服务端获取全部菜单资源,并转换为json字符串。
@RequestMapping("/edit")public String edit(Integer roleId, Model model) {……//树形菜单资源List<Map<String, Object>> allResources = resourceService.getTreeMap();//当前⾓⾊已有资源,设置checked和open属性if (roleId != null) {Set<CmsResource> roleResources = resourceService.findByRoleId(roleId);if (roleResources != null && !roleResources.isEmpty()) {for (Map<String, Object> resource : allResources) {Integer id =(Integer)resource.get("id");for (CmsResource roleResource : roleResources) {if (roleResource.getResourceId().equals(id)) {resource.put("checked", true);resource.put("open", true);break;}}}}}//转换为json字符串String resourceJson = new Gson().toJson(allResources);model.addAttribute("resourceJson", resourceJson);return "/role/edit";}其中resourceService.getTreeMap()⽅法⽤来获取全部菜单资源,主要包括这⼏个字段:id,name,pId,open。
jQuery树插件zTree使⽤⽅法详解最近要做⼀个树结构,就使⽤了jQuery 的树插件,感觉还不错,做个随笔页⾯的基本结构是这样的这⾥的样式是使⽤了metroStyle⽂件夹⾥的类bootstrap风格,当然⾸先需要下载ztree插件,直接百度即可,下载完成后由对应的api和⼀些例⼦,这⾥使⽤的是复选框模板jQuery zTree树的页⾯jsp如下:<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><title> ZTREE DEMO - checkbox</title><link rel="stylesheet" href="/css/demo.css" rel="external nofollow" ><link rel="stylesheet" href="/css/metroStyle.css" rel="external nofollow" ><script type="text/javascript" src="/js/jquery-3.2.1.js"></script><script type="text/javascript" src="/js/jquery.ztree.core.js"></script><script type="text/javascript" src="/js/jquery.ztree.excheck.js"></script><script type="text/javascript" src="/js/jquery.ztree.exedit.js"></script><script type="text/javascript">var setting = {check: {enable: true},data: {simpleData: {enable: true}},callback:{onCheck:onCheck}};// var zNodes =[// { id:1, pId:0, name:"随意勾选 1", open:true},// { id:11, pId:1, name:"随意勾选 1-1", open:false},// { id:111, pId:11, name:"随意勾选 1-1-1"},// { id:112, pId:11, name:"随意勾选 1-1-2"},// { id:12, pId:1, name:"随意勾选 1-2", open:false},// { id:121, pId:12, name:"随意勾选 1-2-1"},// { id:122, pId:12, name:"随意勾选 1-2-2"},// { id:2, pId:0, name:"随意勾选 2", checked:false, open:false},// { id:21, pId:2, name:"随意勾选 2-1"},// { id:22, pId:2, name:"随意勾选 2-2", open:false},// { id:221, pId:22, name:"随意勾选 2-2-1", checked:false},// { id:222, pId:22, name:"随意勾选 2-2-2"},// { id:23, pId:2, name:"随意勾选 2-3"},// { id:3, pId:0, name:"随意勾选 3", checked:false, open:false},// { id:231, pId:3, name:"随意勾选 3-1"},// { id:232, pId:3, name:"随意勾选 3-2", open:false},// { id:2321, pId:232, name:"随意勾选 3-2-1", checked:false},// { id:2322, pId:232, name:"随意勾选 3-2-2"},// { id:233, pId:3, name:"随意勾选 3-3"}// ];var code;function setCheck() {var zTree = $.fn.zTree.getZTreeObj("treeDemo"),py = $("#py").attr("checked")? "p":"",sy = $("#sy").attr("checked")? "s":"",pn = $("#pn").attr("checked")? "p":"",sn = $("#sn").attr("checked")? "s":"",type = { "Y":py + sy, "N":pn + sn};zTree.setting.check.chkboxType = type;// showCode('setting.check.chkboxType = { "Y" : "' + type.Y + '", "N" : "' + type.N + '" };');// showCode('setting.check.chkboxType = { "Y" : "", "N" : "" };');showCode('setting.check.chkboxType = { "Y" : "s", "N" : "ps" };');// setting.check.chkboxType = { "Y" : "", "N" : "" };}function showCode(str) {if (!code) code = $("#code");code.empty();code.append("<li>"+str+"</li>");}var zNodes =[];$(document).ready(function(){var t = $("#treeDemo");$.ajax({type: "POST",url: "/Units/ListTree",dataType: 'json',success: function(result) {console.log(result);$.extend( true, zNodes, result );console.log(zNodes);t = $.fn.zTree.init(t, setting, zNodes);// demoIframe = $("#testIframe");}});});$(document).ready(function(){$.fn.zTree.init($("#treeDemo"), setting, zNodes);setCheck();$("#py").bind("change", setCheck);$("#sy").bind("change", setCheck);$("#pn").bind("change", setCheck);$("#sn").bind("change", setCheck);});function onCheck(e,treeId,treeNode){var treeObj=$.fn.zTree.getZTreeObj("treeDemo"),nodes=treeObj.getCheckedNodes(true),v="";for(var i=0;i<nodes.length;i++){v+=nodes[i].name + ",";alert(nodes[i].id); //获取选中节点的值}}</script></head><body><div class="tree" style="margin-left: 534px;background: #316ac5;width: 0px;"><ul id="treeDemo" class="ztree" style="background: white;height: inherit;margin-top: 295px;"></ul></div><input type="checkbox" id="py" class="checkbox first" checked style="display:none;" /><input type="checkbox" id="sy" class="checkbox first" checked style="display:none;"/><input type="checkbox" id="pn" class="checkbox first" checked style="display:none;"/><input type="checkbox" id="sn" class="checkbox first" checked style="display:none;"/></body></html>上⾯的死数据替换为后台赋予的值,⽤的是ajax⽅式,当然后台需要⽤json⽅式进⾏交互java代码控制器代码如下:@Controller@RequestMapping("/Units")public class UnitsController{@Autowiredprivate UnitsService unitsService;@RequestMapping("/ListTree")@ResponseBodypublic List<JSONObject> ListTree(){List<JSONObject> jsonList = new ArrayList<JSONObject>();List<Units> zTreeAll = unitsService.zTreeAll();for (Units units : zTreeAll) {JSONObject json = new JSONObject();// { id:1, pId:0, name:"随意勾选 1", open:false}if(units.getUnitsId() == units.getNodeData()){JSONObject json1 = new JSONObject();json1.put("id", units.getUnitsId());json1.put("pId", 0);json1.put("name", units.getUnitsName());json1.put("open", false);jsonList.add(json1);json.put("id", -1);json.put("pId", units.getNodeData());json.put("name", units.getSectorName());json.put("open", false);}else{json.put("id", units.getUnitsId());json.put("pId", units.getNodeData());json.put("name", units.getSectorName());json.put("open", false);}jsonList.add(json);}// for (JSONObject units : jsonList) {// System.out.println(jsonList.toString());// }return jsonList;}}这样就可以实现所需要的树结构,ztree树是可以⽆限扩展的,就按照个⼈所需,来选择模板就可以了jsp中的这段代码是获得当前选择值得idfunction onCheck(e,treeId,treeNode){var treeObj=$.fn.zTree.getZTreeObj("treeDemo"),nodes=treeObj.getCheckedNodes(true),v="";for(var i=0;i<nodes.length;i++){v+=nodes[i].name + ",";alert(nodes[i].id); //获取选中节点的值}}以上就是使⽤ztree的基本⽅法,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
jQuery插件实现多级联动菜单效果开发中,有好多地⽅⽤到联动菜单,以前每次遇到联动菜单的时候都去重新写,代码重⽤率很低,前⼏天⼜遇到联动菜单的问题,总结了下,发现可以开发⼀个联动菜单的功能,以后想⽤的时候就⽅便多了。
项⽬中每个页⾯都有引⽤jQuery,,开发个jQuery联动菜单插件,说动⼿就动⼿,下⾯跟⼤家分享分享。
我⽤的jQuery插件⽅式(function($){$.fn.casmenu=function(argvs){//your code}})(jQuery);其中jQuery传⼊的是jquery对象,需要在扩展之前引⽤。
在扩展中同样使⽤jQuery的短格式$。
$.fn是指jquery的命名空间,加在fn上的⽅法及属性,会对jquery实例每⼀个有效,看看下⾯的jquery源码101⾏左右:jQuery.fn = jQuery.prototype = {......}⽐如说后⾯要开发的$.fn.casmenu(),定义之后,在后⾯的jquery对象都可以使⽤该⽅法。
这⾥还有⼀种扩展的⽅法:$.extend({funName: function(){//your code},});这种扩展⽅法和上⾯的是有区别的,要是拿类做类⽐的话,$.extend这种⽅法相当于类中的静态⽅法,上⾯的⼀种⽅式相当于⾮静态⽅法,必须有对象才可以使⽤。
简单的理解,是下⾯这样的://$.fn.casemenu ⽅式扩展的⽅法,必须在有jquery对象的时候才可以使⽤$("#mydiv").casmenu();//$.extend({}) ⽅式扩展的⽅法,可以直接使⽤$.add(2,3);设计思路⾸先是层级菜单的数据保存⽅式,看看下⾯的数据:var levels={//内容中有引号,必须使⽤单引号,外引号必须⽤双引号//name => value1:{退出应⽤: "code1003",登录界⾯:"code1004",跳转⾄个⼈资料界⾯:"code1005",},2:{退出应⽤:{应⽤1:"gameid1",应⽤2:"gameid2",应⽤3:"gameid3",应⽤4:"gameid4",应⽤5:"gameid5",},跳转⾄个⼈资料界⾯:{主界⾯:"main interface",}},3:{应⽤1:{中级场:"12",⾼级场:"13",职业场:"14",⽐赛场:"15",}}}对象levels中的直接键值1、2、3代表菜单的层级,没有就不⽤些,每⼀项name=>value代表select中option的名称和value。
JQuery教程实例-Ajax三级省市联动菜单1,目录结构这个实例的文件目录结构如下图所示。
其中,ajax.sql是数据库文件,data.php是处理ajax请求的php文件,droplist.js是页面效果处理文件,index.php是显示页面。
在进行下一步之前,我们先将ajax.sql导入到mysql数据库中。
2,index.php 文件主要是在页面刚打开时,显示默认的省的信息。
这里不再赘述,代码如下:1<html>2<head>3<meta http-equiv="Content-Type"content="text/html;charset=utf-8"/>4<script type="text/javascript"src="jquery-1.3.2.min.js"></script>5<script type="text/javascript"src="droplist.js"></script>6</head>7<body>8<div align="center"style="margin-top:200px;">9<?php10$conn=mysql_connect("localhost","root","");11mysql_select_db("novel");12mysql_query("set names'utf8'");13$sql="select*from province";14$result=mysql_query($sql);15echo"<from id='droplist'>\n";16echo"<select name='province'>\n";17echo"<option value='-1'selected>请选择省份</option>\n";18while($row=mysql_fetch_row($result)){19echo"<option value='$row[1]'>$row[2]</option>\n";20}21echo"</select>\n";22echo"<select name='selectCity'></select>\n";23echo"<select name='area'></select>\n";24echo"</form>\n";25?>26</div>27</body>28</html>3,droplist.js文件主要是实现了ajax的请求和相应的页面显示效果的处理,比如:其中自定义了ajaxSelectArea()和ajaxSelectCity()两个函数发送ajax请求,这两个函数里面用到的$.ajax()是jquery 框架中ajax的底层实现。
jQuery城市级联菜单,jquery省、市、县三级级联菜单容易用的jQuery城市级联菜单,jquery省、市、县三级级联菜单。
城市写在js文件里,调用只要引用js文件即可。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="/1999/xhtml"><head><title>jQuery 三级地市级联菜单_</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style>#test select{width:100px;margin-left:20px;}</style><script src="jquery-1[1].2.6.js" type="text/javascript"></script><script src="jquery.provincesCity.js" type="text/javascript"></script><script src="provincesdata.js" type="text/javascript"></script><script>//调用插件$(function(){$("#test").ProvinceCity();});</script></head><body><div id="test"></div></body></html>jquery省、市、县三级级联菜单效果图。
jqgridthree树形结构 最近我们的表格中,需要更改数据的显⽰⽅式,就是jqgrid中以树形的⽅式显⽰。
请先看图: 就是简单的这种从属⽅式。
但是因为这个没有找到官⽅的⽂档(后来找到了,但是发现是翻译过来的,也不是很清楚),所以做出来稍微的有点困难,好在⽅法总⽐困难多。
这个问题还是解决了,在这⾥我记录⼀下。
⽅便以后的⼩伙伴们运⽤,如果有⼤神的话,也欢迎指出错误。
⾸先是在jqgrid中需要添加东西,请看下⾯的demo:1 treeGrid: true,2 treeGridModel: 'adjacency', //固定写法,还有其他的⼀种⽅式,但是那种没有研究过3 ExpandColumn : 'agent_id', //4 ExpandColClick: true, //能不能点击 false就不能点击了,true就是能点击5 treeReader : {6 //前⾯的四个参数需要在json中展⽰7 level_field: "level", //级别,主要是就是说展现出来是第⼏层,最⾼级是0,然后是1,2,3……8 parent_id_field: "parent", //⽤来标识哪个是⽗元素(需要时字符串格式:“parent”:“123”是可以的,但是如果是“parent”:123就错了)9 leaf_field: "is_leaf", //是不是根节点,false表⽰这个不是最后的节点,true表⽰是最后的节点。
(如果这个是最后的节点,但是设置的还是false,会发⽣⼀种情况,就是点击这个⼜重新加载了⼀遍数据)10 expanded_field: "expanded", //是不是需要展开,false不展开,true展开11 loaded_field:true //12 },就是这12⾏代码,其实上⾯的写在html中,前端的任务就算是完成了。
S2SH+JQuery ztree生成三级级联树形列表菜单1.LoadZTreeAction.javapublic LoadZTreeAction() extends ActionSupport{private static final long serialVersionUID = 4258282097802772367L;private OneDAO oneDAO;private TwoDAO twoDAO;private ThreeDAO threeDAO;//Generate getters and setters//为了提高程序效率,先加载二级级联菜单,当点击子菜单时再动态添加下一级public String loadZTree(){JSONArray jsonArray = new JSONArray();JSONObject one = new JSONObject();JSONObject two = new JSONObject();List<One> listOne = oneDAO.findAll();for(One oTemp:listOne){int pID = -1;one.put("id",oTemp.getID());one.put("pID",pID);one.put("name",oTemp.getName());one.put("url","");one.put("target","rightFrame");jsonObject.add(one);List<Two> listTwo = twoDAO.findByOneId(oTemp.getID());for(Two tTemp : listTwo){two.put("id",tTemp.getID());two.put("pID",oTemp.getID());two.put("name",tTemp.getName());two.put("url","");two.put("target","rightFrame");jsonObject.add(two);}}return null;}public String loadSonTree(){HttpServletRequest request = ServletActionContext.getRequest();HttpServletResponse response = ServletActionContext.getResponse();response.setCharacterEncoding("utf-8");response.contentType("html/text");JSONArray jsonArray = new JSONArray();JSONObject obj = new JSONObject();String twoID = request.getParameter("twoID");List<Three> listThree = threeDAO.findByTwoId(twoID);for(Three thTemp : listThree){obj.put("id",thTemp.getID());obj.put("pId",twoID);obj.put("name",thTemp.getName());obj.put("url","");obj.put("target","rightFrame");jsonArray.add(obj);}try{PrintWriter out = response.getWriter();out.print(jsonArray);out.flush();out.close();}catch(IOException ioe){ioe.printStackTrace();}return null;}}2.struts.xml<package name="test" namespace="/json" extends="json-default"><action name="loadZTree" class="LoadZTreeListAction" method="loadZTree"></action> <action name="loadSonTree" class="LoadZTreeListAction"method="loadSonTree"></action></package>3.applicationContext.xml<bean name="loadZTreeListAction" class="com.action.LoadZTreeAction"><property name="oneDAO"><ref bean="OneDAO"></property><property name="TwoDAO"><ref bean="TwoDAO"></property><property name="ThreeDAO"><ref bean="ThreeDAO"></property></bean>4.test.jsvar setting = {async: {enable: true,url: "json/loadZTree.action",autoParam: ["id"]},asyncParamOther: [],expandSpeed: fast,data: {simpleData: {enable: true,idKey: "id",pIdKey: "pId",rootPid: "-2"}},callback: {onClick: treeNodeClick}};$(document).ready(function() {$.fn.zTree.init($("#treeDemo"), setting);});function treeNodeClick(event,treeId,treeNode){twoID = treeNode.id;var params = {"twoID": twoID};$.ajax({url: "json/loadSonTree.action",type: "post",dataType: "json",data: params,cache: false,error: function(e){e.getMessage();},success: function(jsonArray){var treeObj = $.fn.zTree.getZTreeObj("treeDemo");var newNodes = jsonarray;treeObj.addNodes(treeNode, newNodes);}});}5.test.jsp<link rel="stylesheet" href="css/zTreeStyle/myzTreeStyle.css" type="text/css"></link><script type="text/javascript" src="./js/jquery-1.8.2.js"></script><script type="text/javascript" src="js/jquery.ztree.core-3.4.js" charset="UTF-8"></script> <script type="text/javascript" src="js/test.js" charset="UTF-8"></script>...<body><div><ul id="treeDemo" class="ztree"></ul></div></body>。