zTree的使用教程
1、首先去官网下载http://www.ztree.me/v3/main.php#_zTreeInfo
2、之后引入:
<script src="js/jquery.ztree.all-3.5.js"></script>
<link href="css/zTreeStyle/zTreeStyle.css" rel="stylesheet" type="text/css">
3、写js:
<!--树形结构 JS-->
<script type="text/javascript">
var setting= {
data: {
simpleData: {enable: true}
},
check: {
enable: true,
chkStyle: "radio",
radioType: "all"
},
view: {
showLine: true
},
callback: {
onClick: onClick,
onCheck: onCheck,
}
}; var zNodes =[
<#if selectNewsTypeAll?size gt 0>
<#list selectNewsTypeAll as sNewsTypeAll>
{id:${sNewsTypeAll.id}, pId:${sNewsTypeAll.parentId}, name:"${sNewsTypeAll.name}"},
</#list>
</#if>
]; $(document).ready(function() {
$.fn.zTree.init($("#treeConfig"), setting, zNodes);
}); function onClick(e,treeId,treeNode) {
var zTree = $.fn.zTree.getZTreeObj("treeConfig");
zTree.checkNode(treeNode, !treeNode.checked, null, true);
return false;
} function onCheck(e,treeId,treeNode) {
var zTree = $.fn.zTree.getZTreeObj("treeConfig"),
nodes = zTree.getCheckedNodes(true);
var name = "", id = "";
for (var i = 0, l = nodes.length; i < l; i++) {
name = nodes[i].name;
newsTypeId = nodes[i].id;
}
$("#treeName").val(name);
$("#treeId").val(id);
} function showMenu() {
var dropdownObj = $("#treeName");
var dropdownOffset = $("#treeName").offset();
$("#treeContainer").css({
left: dropdownOffset.left + "px",
top: dropdownOffset.top + dropdownObj.outerHeight() + "px"
}).slideDown("fast");
$("body").bind("mousedown", onBodyDown);
var w = $("#treeName").width();
var p = $("#treeName").css("padding-left");
$("#treeConfig").css("width",parseInt(w)+parseInt(p)*2);
} function hideMenu() {
$("#treeContainer").fadeOut("fast");
$("body").unbind("mousedown", onBodyDown);
} function onBodyDown(event) {
if (!(event.target.id == "chooseButton" || event.target.id == "treeName" || event.target.id == "treeContainer" || $(event.target).parents("#treeContainer").length > 0)) {
hideMenu();
//以下代码暂时没用到 start
var height = top.$("#mainFrame").contents().find("body").height();
if (height < 850) {
height = 850;
}
top.$("#mainFrame").height(height);
//以下代码暂时没用到 end
}
}
</script>
文本框的代码:
<input type="text" class="form-control input-sm" id="treeName" onclick="showMenu()">
<input type="hidden" name="newsTypeId" id="treeId"/>
树状图显示的地方:
<div id="treeContainer" class="treeContainer">
<ul id="treeConfig" class="ztree"></ul>
</div>
必要的样式:
.treeContainer{
display:none;
position: absolute;
}
以下是详解:
数据填充
重点就在于zNodes的配置。就是要配置好id、pId、name;这三个属性。
var zNodes =[
<#if selectNewsTypeAll?size gt 0>
<#list selectNewsTypeAll as sNewsTypeAll>
{
id:${sNewsTypeAll.id},
pId:${sNewsTypeAll.parentId},
name:"${sNewsTypeAll.name}"
},
</#list>
</#if>
];
setting 中callback是回调函数,我上面写了两个
callback: {
//节点点击事件
onClick: onClick,
//节点选中事件
onCheck: onCheck,
}
setting中其他属性默认,就行。
由于一加载页面就要把树状图准备好,只不过没有显示出来而已!所以需要以下代码
$(document).ready(function() {
//初始化
$.fn.zTree.init($("#treeConfig"), setting, zNodes);
});
节点点击事件,没什么说的,这样配置就可以了:
function onClick(e,treeId,treeNode) {
var zTree = $.fn.zTree.getZTreeObj("treeConfig");
zTree.checkNode(treeNode, !treeNode.checked, null, true);
return false;
}
节点选择事件:
function onCheck(e,treeId,treeNode) {
var zTree = $.fn.zTree.getZTreeObj("treeConfig"),
nodes = zTree.getCheckedNodes(true);
var name = "", id = "";
for (var i = 0, l = nodes.length; i < l; i++) {
name = nodes[i].name;
newsTypeId = nodes[i].id;
}
$("#treeName").val(name);
$("#treeId").val(id);
}
其中:
$("#treeName").val(name);
$("#treeId").val(id);
是根据自己的业务来的,我是因为在选择节点之后,要把,你选择的名字显示出来,并且id要写入隐藏字段,以便保存到数据库。
树状图是在什么时候显示出来呢?我设置的是当点击文本框的时候显示出来
function showMenu() {
var dropdownObj = $("#treeName");
var dropdownOffset = $("#treeName").offset();
$("#treeContainer").css({
left: dropdownOffset.left + "px",
top: dropdownOffset.top + dropdownObj.outerHeight() + "px"
}).slideDown("fast");
$("body").bind("mousedown", onBodyDown);
//获取文本框的宽度
var w = $("#treeName").width();
//获取文本框的内填充
var p = $("#treeName").css("padding-left");
//设置树状图的宽度
$("#treeConfig").css("width",parseInt(w)+parseInt(p)*2);
}
其中:
$("body").bind("mousedown", onBodyDown);
是绑定了一个鼠标点击事件,当点击其他区域,会触发onBodyDown事件。
function onBodyDown(event) {
if (!(event.target.id == "chooseButton" || event.target.id == "treeName" || event.target.id == "treeContainer" || $(event.target).parents("#treeContainer").length > 0)) {
hideMenu();
//以下代码暂时没用到 start
var height = top.$("#mainFrame").contents().find("body").height();
if (height < 850) {
height = 850;
}
top.$("#mainFrame").height(height);
//以下代码暂时没用到 end
}
}
这里面又调用hideMenu()把树状图隐藏掉。
需要用到的文本框代码:
<input type="text" class="form-control input-sm" id="treeName" onclick="showMenu()">
<input type="hidden" name="newsTypeId" id="treeId"/>
而用于显示树状图的代码是: 这段代码不一定要和上面那段文本框代码放在一起。
<div id="treeContainer" class="treeContainer">
<ul id="treeConfig" class="ztree"></ul>
</div>
因为,这里面做了位置的偏移。
function showMenu() {
var dropdownObj = $("#treeName");
//获取偏移量
var dropdownOffset = $("#treeName").offset();
$("#treeContainer").css({
left: dropdownOffset.left + "px",
top: dropdownOffset.top + dropdownObj.outerHeight() + "px"
}).slideDown("fast");
$("body").bind("mousedown", onBodyDown);
var w = $("#treeName").width();
var p = $("#treeName").css("padding-left");
$("#treeConfig").css("width",parseInt(w)+parseInt(p)*2);
}
由于zTree自带的样式不好看,我进行了细微的跳转,只是让显示稍微好看些
/*一定要的*/
.treeContainer{
display:none;
position: absolute;
}
/*根据自己情况而定*/
.treeContainer .ztree{
background-color:#FFF;
}
zTree的使用教程的更多相关文章
- Ztree使用教程
这两天项目需要写一个树形帮助,学习了我们项目组的老师的Ztree的树的写法,实现了这个帮助,下面来总结一下Ztree的用法. (也是参考的一篇csdn上的博客了) zTree 是一个依靠 jQuery ...
- ztree实用教程
首先导入ztree ztree是建立在jquery的基础上的 <link href="js/zTree_v3-master/css/zTreeStyle/zTreeStyle.css& ...
- java菜鸟篇<四> ZTree入门篇
今天准备入手ZTree,于是在百度上搜了搜,找到了开源网址和一些大神们的教程,于是乎下午开始了组织树(ZTree)的练习 初步完整的作品是这个样子的: 1.咱们要去这个工具的开源网里找下载的东西: ( ...
- Angular整合zTree
1 前提准备 1.1 新建一个angular4项目 参考博文:点击前往 1.2 去zTree官网下载zTree zTree官网:点击前往 三少使用的版本:点击前往 2 编程步骤 从打印出zTree对象 ...
- zTree静态树与动态树的用法——(七)
0.[简介] zTree 是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件 兼容 IE.FireFox.Chrome 等浏览器 在一个页面内可同时生成多个 Tree 实 ...
- ztree案例笔记:用户不规范操作导致添加不了节点的问题
我使用ztree开发了简码"万能助手",经过一段时间的观察,发现有个别用户不看教程就开始操作,总能给我折腾出一些让人哭笑不得的问题. 比如,把某个根栏目里的节点全删除,然后发现添加 ...
- 项目中jquery插件ztree使用记录
最近公司要求做一个关于后台的管理系统.在这个mvvm模式横行的年代,虽然这里用jquery做项目可能有点不符合时代的潮流,但是管他呢,能做出来先在说呗(公司以后要改用angular或者vue来统一前端 ...
- [译]聊聊C#中的泛型的使用(新手勿入) Seaching TreeVIew WPF 可编辑树Ztree的使用(包括对后台数据库的增删改查) 字段和属性的区别 C# 遍历Dictionary并修改其中的Value 学习笔记——异步 程序员常说的「哈希表」是个什么鬼?
[译]聊聊C#中的泛型的使用(新手勿入) 写在前面 今天忙里偷闲在浏览外文的时候看到一篇讲C#中泛型的使用的文章,因此加上本人的理解以及四级没过的英语水平斗胆给大伙进行了翻译,当然在翻译的过程中发 ...
- 《JQuery常用插件教程》系列分享专栏
<JQuery常用插件教程>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201719.html 文章 使用jquery插件实现图 ...
随机推荐
- python字典不区分大小写
from multidict import CIMultiDict dic=CIMultiDict() dic["key"]="1234" print(dic[ ...
- [转载]Maximum Flow: Augmenting Path Algorithms Comparison
https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-augmenting-path- ...
- jvm 监控工具
背景 不懂jvm监控工具好意思说自己搞java的吗.其实搞了十多年的人我都见过不懂得,不懂不要紧,老实工作就行啊.这就是属于非技术的话题了,实在不知从何说起.还是赶紧学习下吧,可以去装了.我认真学习后 ...
- 缓存系列之三:redis安装及基本数据类型命令使用
一:Redis是一个开源的key-value存储系统.与Memcached类似,Redis将大部分数据存储在内存中,支持的数据类型包括:字符串.哈希表.链表.集合.有序集合以及基于这些数据类型的相关操 ...
- java对图片进行透明化处理
package utils; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; ...
- 转载:UML学习(一)-----用例图 (silent)
原文:http://www.cnblogs.com/silent2012/archive/2011/09/07/2169518.html 1.什么是用例图 用例图源于Jacobson的OOSE方法,用 ...
- Laravel 5.2--改变数据库字段值,编辑时候,默认选中
模型 <?php namespace App\Models; use App\Helpers\ImageHelper; use App\Libraries\Nestedset\NodeTrait ...
- iOS ATS问题(补充中)
首先,针对2017年一月后,需要提交到apple store的程序,如果使用App Transport Security Settings对程序 ATS情况进行特殊配置,需要对苹果进行说明,指出使用的 ...
- WebSocketTest 异步通讯,实时返回数据
using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;usin ...
- Confluence 6 通过 SSL 或 HTTPS 运行 - 创建或请求一个 SSL 证书
在启用 HTTPS 之前,你需要一个有效的证书,如果你已经有了一个有效的证书,你可以直接跳过这个步骤,进入 step 2. 你可以创建一个自签名的证书,或者从信任的 Certificate Autho ...