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 相关文章推荐
JavaScript 字符串连接性能优化
Dec 20 Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
Apr 27 Javascript
jquery-easyui关闭tab自动切换到前一个tab
Jul 29 Javascript
js实现字符串的16进制编码不加密
Apr 25 Javascript
jQuery中eq()方法用法实例
Jan 05 Javascript
javascript面向对象快速入门实例
Jan 13 Javascript
理解JavaScript的变量的入门教程
Jul 07 Javascript
基于jQuery实现多层次的手风琴效果附源码
Sep 21 Javascript
一次$.getJSON不执行的简单记录
Jul 19 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
Dec 25 Javascript
基于js中style.width与offsetWidth的区别(详解)
Nov 12 Javascript
基于js实现抽红包并分配代码实例
Sep 19 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
PHP多个版本的分析解释
2011/07/21 PHP
基于php伪静态的实现详细介绍
2013/04/28 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
jquery validate使用攻略 第四步
2010/07/01 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
4种JavaScript实现简单tab选项卡切换的方法
2016/01/06 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
const和static readonly区别
2013/05/20 面试题
采购主管工作职责
2013/12/12 职场文书
店面销售职位的职责
2014/03/09 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
老员工辞职信范文
2015/05/12 职场文书
飞越疯人院观后感
2015/06/09 职场文书
小学教师见习总结
2015/06/23 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang
JavaScript设计模式之原型模式详情
2022/06/21 Javascript
python读取mat文件生成h5文件的实现
2022/07/15 Python