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 09 Javascript
浅谈Javascript变量作用域问题
Dec 16 Javascript
js限制input标签中只能输入中文
Jun 26 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
Jul 27 Javascript
JS生成不重复的随机数组的简单实例
Jul 10 Javascript
easy ui datagrid 从编辑框中获取值的方法
Feb 22 Javascript
vue登录注册及token验证实现代码
Dec 14 Javascript
Vue+element-ui 实现表格的分页功能示例
Aug 18 Javascript
微信小程序顶部导航栏滑动tab效果
Jan 28 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
Mar 07 Javascript
js+html实现周岁年龄计算器
Jun 25 Javascript
如何对react hooks进行单元测试的方法
Aug 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 程序员应该使用的10个组件
2009/10/31 PHP
JS与PHP向函数传递可变参数的区别实例代码
2011/05/18 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
jQuery之$(document).ready()使用介绍
2012/04/05 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
SeaJS 与 RequireJS 的差异对比
2014/12/08 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
关于JS中二维数组的声明方法
2016/09/24 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
详解微信小程序的 request 封装示例
2018/08/21 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
Python中__call__用法实例
2014/08/29 Python
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
python实现简单井字棋小游戏
2020/03/05 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
水果花束:Fruit Bouquets
2017/12/20 全球购物
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
一套Delphi的笔试题一
2016/02/14 面试题
药学专业大学生自荐信
2013/09/28 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
支教个人总结
2015/03/04 职场文书
开天辟地观后感
2015/06/09 职场文书
请病假条范文
2015/08/17 职场文书
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python