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 相关文章推荐
Jquery中获取iframe的代码
Jan 11 Javascript
javascript实现日历控件(年月日关闭按钮)
Dec 12 Javascript
JavaScript实现移动端滑动选择日期功能
Jun 21 Javascript
AngularJS入门教程之AngularJS 模板
Aug 18 Javascript
Vue 单文件中的数据传递示例
Mar 21 Javascript
AngularJS动态添加数据并删除的实例
Feb 27 Javascript
angularJS实现动态添加,删除div方法
Feb 27 Javascript
解决vue 更改计算属性后select选中值不更改的问题
Mar 02 Javascript
jquery实现垂直无限轮播的方法分析
Jul 16 jQuery
微信小程序自定义弹出层效果
May 26 Javascript
从表单校验看JavaScript策略模式的使用详解
Oct 17 Javascript
Vue+Bootstrap实现简易学生管理系统
Feb 09 Vue.js
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+ACCESS 文章管理程序代码
2010/06/21 PHP
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
PHP实现添加购物车功能
2017/03/06 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
深入理解Promise.all
2018/08/08 Javascript
vue实现图片预览组件封装与使用
2019/07/13 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
python获取mp3文件信息的方法
2015/06/15 Python
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
如何理解委托
2012/01/06 面试题
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
会计找工作求职信范文
2013/12/09 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
老师的检讨书
2014/02/23 职场文书
老人祝寿主持词
2014/03/28 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
化学教育专业自荐信
2014/07/04 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript