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 相关文章推荐
javascript 框架小结 个人工作经验
Jun 13 Javascript
jquery与google map api结合使用 控件,监听器
Mar 04 Javascript
动态添加option及createElement使用示例
Jan 26 Javascript
用json方式实现在 js 中建立一个map
May 02 Javascript
jQuery EasyUI之DataGrid使用实例详解
Jan 04 Javascript
JavaScript6 let 新语法优势介绍
Jul 15 Javascript
Vue.js中数据绑定的语法教程
Jun 02 Javascript
深入理解vue.js中的v-if和v-show
Jun 22 Javascript
vue中各组件之间传递数据的方法示例
Jul 27 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
Dec 27 Javascript
详解使用create-react-app快速构建React开发环境
May 16 Javascript
Vue 进阶之路(三)
Apr 18 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+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
js分页工具实例
2015/01/28 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
2019/07/26 jQuery
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
python 实现简单的计算器(gui界面)
2020/11/11 Python
pandas 按日期范围筛选数据的实现
2021/02/20 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
Intersport西班牙:在线体育商店
2019/11/06 全球购物
财务人员个人求职信范文
2013/12/04 职场文书
珍珠奶茶店创业计划书
2014/01/11 职场文书
人事档案接收函
2014/01/12 职场文书
销售主管岗位职责
2014/02/08 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书
python中tkinter复选框使用操作
2021/11/11 Python