jQuery使用zTree插件实现树形菜单和异步加载


Posted in Javascript onFebruary 25, 2016

本文实例讲解了jQuery使用zTree插件实现树形菜单和异步加载,并且可以进行编辑,分享给大家供大家参考,具体内容如下

效果图:

jQuery使用zTree插件实现树形菜单和异步加载

一、HTML代码

<html>
<head runat="server">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title></title>
 <link href="zTree/css/demo.css" rel="stylesheet" />
 <link href="zTree/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
 <script src="zTree/js/jquery-1.4.4.min.js"></script>
 <script src="zTree/js/jquery.ztree.core-3.5.js"></script>
 <script src="zTree/js/jquery.ztree.excheck-3.5.js"></script>
 <script src="zTree/js/jquery.ztree.exedit-3.5.js"></script>
 <script type="text/javascript">
  var setting = {
 async: {
  enable: true,
  url: "AjaxPage/GetAjax.aspx?z=sdfww234edfsd",
  autoParam: ["id"],
  dataFilter: filter,
  contentType: "application/json",
  type:"get"
 },
 view: {
  expandSpeed: "",
  addHoverDom: addHoverDom,
  removeHoverDom: removeHoverDom,
  selectedMulti: false
 },
 check: {
  enable: true
 },
 edit: {
  enable: true
 },
 data: {
  simpleData: {
  enable: true
  }
 },
 callback: {
  beforeRemove: beforeRemove,
  beforeRename: beforeRename,
 }
 };
 function filter(treeId, parentNode, childNodes) {
 if (!childNodes) return null;
 for (var i = 0, l = childNodes.length; i < l; i++) {
  childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
 }
 return childNodes;
 }
 function beforeRemove(treeId, treeNode) {
 var zTree = $.fn.zTree.getZTreeObj("treeDemo");
 zTree.selectNode(treeNode);
 return confirm("确认删除 节点 -- " + treeNode.name + " 吗?");
 }
 function beforeRename(treeId, treeNode, newName) {
 if (newName.length == 0) {
  alert("节点名称不能为空.");
  return false;
 }
 return true;
 }

 var newCount = 1;
 function addHoverDom(treeId, treeNode) {
 var sObj = $("#" + treeNode.tId + "_span");
 if (treeNode.editNameFlag || $("#addBtn_" + treeNode.tId).length > 0) return;
 var addStr = "<span class='button add' id='addBtn_" + treeNode.tId
  + "' title='add node' onfocus='this.blur();'></span>";
 sObj.after(addStr);
 console.log("add " + "#addBtn_" + treeNode.id);
 var btn = $("#addBtn_" + treeNode.tId);
 if (btn) btn.bind("click", function () {
  var zTree = $.fn.zTree.getZTreeObj("treeDemo");
  zTree.addNodes(treeNode, { id: (100 + newCount), pId: treeNode.id, name: "new node" + (newCount++) });
  return false;
 });
 };
 function removeHoverDom(treeId, treeNode) {
 console.log("remove " + "#addBtn_" + treeNode.id);
 $("#addBtn_" + treeNode.tId).unbind().remove();
 };
 $(document).ready(function () {
 $.fn.zTree.init($("#treeDemo"), setting);
 });
 </script>
</head>
<body>
 <ul id="treeDemo" class="ztree" style="width: 560px; overflow: auto;"></ul>
</body>
</html>

二、异步请求的后台数据:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace CssStudyWeb.AjaxPage
{
 public partial class GetAjax : System.Web.UI.Page
 {
 protected void Page_Load(object sender, EventArgs e)
 {
  if (Request.QueryString["z"] == "sdfww234edfsd")//根据会员卡号,查询会员卡信息
  {
  StringBuilder sb = new StringBuilder();
  sb.Append("[");
  sb.Append("{\"id\":\"1\",\"name\":\"销售单管理\",\"pId\":\"0\"},");
  sb.Append("{\"id\":\"101\",\"name\":\"销售单列表\",\"pId\":\"1\"},");
  sb.Append("{\"id\":\"102\",\"name\":\"销售单综合查询\",\"pId\":\"1\"},");

  sb.Append("{\"id\":\"2\",\"name\":\"系统管理\",\"pId\":\"0\"},");
  sb.Append("{\"id\":\"103\",\"name\":\"权限组管理\",\"pId\":\"2\"},");
  sb.Append("{\"id\":\"104\",\"name\":\"权限菜单管理\",\"pId\":\"2\"}");
  sb.Append("]");
  Response.Write(sb.ToString());
  }
 }
 }
}

更多关于ztree控件的内容,请参考专题《jQuery插件ztree使用汇总》

以上就是zTree插件实现树形菜单和异步加载的全部代码,希望对大家的学习有所帮助。

Javascript 相关文章推荐
jquery选择器的选择使用及性能介绍
Jan 16 Javascript
js open() 与showModalDialog()方法使用介绍
Sep 10 Javascript
jquery中event对象属性与方法小结
Dec 18 Javascript
Express.JS使用详解
Jul 17 Javascript
浅析Bootstrap表格的使用
Jun 23 Javascript
Bootstrap表格制作代码
Mar 17 Javascript
捕获未处理的Promise错误方法
Oct 13 Javascript
JavaScript实现计算多边形质心的方法示例
Jan 31 Javascript
vue刷新和tab切换实例
Feb 11 Javascript
javascript获取元素的计算样式
May 24 Javascript
layui table 表格上添加日期控件的两种方法
Sep 28 Javascript
vue如何使用async、await实现同步请求
Dec 09 Javascript
灵活的理解JavaScript中的this指向
Feb 25 #Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
Feb 25 #Javascript
jQuery插件实现文字无缝向上滚动效果代码
Feb 25 #Javascript
jQuery zTree加载树形菜单功能
Feb 25 #Javascript
JavaScript实现搜索框的自动完成功能(一)
Feb 25 #Javascript
jquery插件之文字间歇自动向上滚动效果代码
Feb 25 #Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
Feb 25 #Javascript
You might like
点评山进PR-D3L三波段收音机
2021/03/02 无线电
PHP MSSQL 存储过程的方法
2008/12/24 PHP
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
2015/01/04 PHP
PHP安全下载文件的方法
2016/04/07 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
JavaScript基础语法之js表达式
2016/06/07 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
Python实现计算最小编辑距离
2016/03/17 Python
Python实现的密码强度检测器示例
2017/08/23 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
英国女士家居服网站:hush
2017/08/09 全球购物
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
幼儿园家长会邀请函
2014/01/15 职场文书
爱心捐款感谢信
2015/01/20 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
OpenCV-Python实现轮廓拟合
2021/06/08 Python