jquery ztree实现下拉树形框使用到了json数据


Posted in Javascript onMay 14, 2014

公司最近的项目需要用到树形下拉框,在网上找了挺多源码,最后还是采用了zTree来实现,因为代码的移植性比较高,而且数据的获取比较容易。废话不多说,直接上代码。

index.jsp

<%@ page language="java" pageEncoding="UTF-8"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> 
<html> 
<head> 
<link rel="stylesheet" href="<c:url value='/js/ztree/css/demo.css'/>" type="text/css"></link> 
<link rel="stylesheet" href="<c:url value='/js/ztree/css/zTreeStyle/zTreeStyle.css'/>" type="text/css"></link> 
<script type="text/javascript" src="<c:url value='/js/ztree/js/jquery-1.4.4.min.js'/>"></script> 
<script type="text/javascript" src="<c:url value='/js/ztree/js/jquery.ztree.core-3.5.js'/>"></script> 
<SCRIPT type="text/javascript"> 
<!-- 
var setting = { 
view: { 
dblClickExpand: false 
}, 
data: { 
simpleData: { 
enable: true 
} 
}, 
callback: { 
beforeClick: beforeClick, 
onClick: onClick 
} 
}; //json数据源,也可以从后台读取json字符串,并转换成json对象,如下所示 
//var strNodes = '${jsonList}'; 
//var zNodes = eval("("+strNodes+")"); //将json字符串转换成json对象数组,strNode一定要加"()",不然转不成功 
var zNodes =[ 
{id:1, pId:0, name:"北京"}, 
{id:2, pId:0, name:"天津"}, 
{id:3, pId:0, name:"上海"}, 
{id:6, pId:0, name:"重庆"}, 
{id:4, pId:0, name:"河北省", open:true}, 
{id:41, pId:4, name:"石家庄"}, 
{id:42, pId:4, name:"保定"}, 
{id:43, pId:4, name:"邯郸"}, 
{id:44, pId:4, name:"承德"}, 
{id:5, pId:0, name:"广东省", open:true}, 
{id:51, pId:5, name:"广州"}, 
{id:52, pId:5, name:"深圳"}, 
{id:53, pId:5, name:"东莞"}, 
{id:54, pId:5, name:"佛山"}, 
{id:6, pId:0, name:"福建省", open:true}, 
{id:61, pId:6, name:"福州"}, 
{id:62, pId:6, name:"厦门"}, 
{id:63, pId:6, name:"泉州"}, 
{id:64, pId:6, name:"三明"} 
]; 
function beforeClick(treeId, treeNode) { 
var check = (treeNode && !treeNode.isParent); 
if (!check) alert("只能选择城市..."); 
return check; 
} 
function onClick(e, treeId, treeNode) { 
var zTree = $.fn.zTree.getZTreeObj("treeDemo"), 
nodes = zTree.getSelectedNodes(), 
v = ""; 
nodes.sort(function compare(a,b){return a.id-b.id;}); 
for (var i=0, l=nodes.length; i<l; i++) { 
v += nodes[i].name + ","; 
} 
if (v.length > 0 ) v = v.substring(0, v.length-1); 
var cityObj = $("#citySel"); 
cityObj.attr("value", v); 
} 
function showMenu() { 
var cityObj = $("#citySel"); 
var cityOffset = $("#citySel").offset(); 
$("#menuContent").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() + "px"}).slideDown("fast"); 
$("body").bind("mousedown", onBodyDown); 
} 
function hideMenu() { 
$("#menuContent").fadeOut("fast"); 
$("body").unbind("mousedown", onBodyDown); 
} 
function onBodyDown(event) { 
if (!(event.target.id == "menuBtn" || event.target.id == "menuContent" || $(event.target).parents("#menuContent").length>0)) { 
hideMenu(); 
} 
} 
$(document).ready(function(){ 
$.fn.zTree.init($("#treeDemo"), setting, zNodes); 
}); 
//--> 
</SCRIPT> 
</head> 
<body> 
<div class="zTreeDemoBackground left"> 
<ul class="list"> 
<li class="title"> <span class="highlight_red">选择城市时,按下 Ctrl 或 Cmd 键可以进行多选</span></li> 
<li class="title"> 城市:<input id="citySel" type="text" readonly value="" style="width:120px;"/> 
<a id="menuBtn" href="#" onclick="showMenu(); return false;">选择</a></li> 
</ul> 
</div> 
<div id="menuContent" class="menuContent" style="display:none; position: absolute;"> 
<ul id="treeDemo" class="ztree" style="margin-top:0; width:160px;"></ul> 
</div> 
</body> 
</html>

spring后台

json数据类

public class EquipTypeJson { 
private String id; 
private String pId; 
private String name; public String getId() { 
return id; 
} 
public void setId(String id) { 
this.id = id; 
} 
public String getPId() { 
return pId; 
} 
public void setPId(String pId) { 
this.pId = pId; 
} 
public String getName() { 
return name; 
} 
public void setName(String name) { 
this.name = name; 
} 

}

controller页面
public ModelAndView List(HttpServletRequest request, HttpServletResponse response,Product prod) throws Exception { 
Map map=new HashMap(); 
List<EquipTypeJson> list = testService.getAllEquipType();//数据库中获取源数据 
JSONArray jsonArray = JSONArray.fromObject(list); //将list数据转为json对象 
String json = jsonArray.toString(); //将json对象转为字符串 
map.put("jsonList", json); 
return new ModelAndView("equip/List").addAllObjects(map); 
}
Javascript 相关文章推荐
JXTree对象,读取外部xml文件数据,生成树的函数
Apr 02 Javascript
jQuery移动和复制dom节点实用DOM操作案例
Dec 17 Javascript
Javascript拓展String方法小结
Jul 08 Javascript
extjs中form与grid交互数据(record)的方法
Aug 29 Javascript
javascript解三阶幻方(九宫格)
Apr 22 Javascript
js 判断数据类型的几种方法
Jan 13 Javascript
从零学习node.js之模块规范(一)
Feb 21 Javascript
jquery实现图片上传前本地预览
Apr 28 jQuery
浅谈React中组件间抽象
Jan 27 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
Oct 25 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
Apr 11 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
Nov 14 Javascript
JQuery性能优化的几点建议
May 14 #Javascript
js 通过html()及text()方法获取并设置p标签的显示值
May 14 #Javascript
JQuery教学之性能优化
May 14 #Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
May 14 #Javascript
javascript 中that的含义示例介绍
May 14 #Javascript
table insertRow、deleteRow定义和用法总结
May 14 #Javascript
jQuery 中国省市两级联动选择附图
May 14 #Javascript
You might like
php strrpos()与strripos()函数
2013/08/31 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
Jquery Change与bind事件代码
2011/09/29 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
jQuery制作简洁的图片轮播效果
2015/04/03 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
浅析JavaScript动画
2015/06/10 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
python快速排序代码实例
2013/11/21 Python
python制作企业邮箱的爆破脚本
2016/10/05 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
Python tornado上传文件的功能
2020/03/26 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
应届毕业生求职信范文
2014/05/08 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
幼师小班个人总结
2015/02/12 职场文书
三八节活动简报
2015/07/20 职场文书