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 相关文章推荐
一个简单的网站访问JS计数器 刷新1次加1次访问
Sep 20 Javascript
jquery如何获取复选框的值
Dec 12 Javascript
jQuery插件实现静态HTML验证码校验
Nov 06 Javascript
JQuery.Ajax()的data参数类型实例详解
Nov 20 Javascript
AngularJS 避繁就简的路由
Jul 01 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
Nov 21 Javascript
基于vue2.0+vuex的日期选择组件功能实现
Mar 13 Javascript
使用Angular CLI从蓝本生成代码详解
Mar 24 Javascript
jQuery 实现倒计时天,时,分,秒功能
Jul 31 jQuery
基于jQuery实现挂号平台首页源码
Jan 06 jQuery
HTML元素拖拽功能实现的完整实例
Dec 04 Javascript
原生JS实现分页
Apr 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
对Session和Cookie的区分与解释
2007/03/16 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
PHP7新功能总结
2019/04/14 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
Bootstrap3多级下拉菜单
2017/02/24 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
JavaScript WeakMap使用详解
2021/02/05 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
python控制windows剪贴板,向剪贴板中写入图片的实例
2018/05/31 Python
从0开始的Python学习016异常
2019/04/08 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
Python selenium自动化测试模型图解
2020/04/15 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
求职面试个人自我评价
2014/02/28 职场文书
八一建军节演讲稿
2014/09/10 职场文书
法人代表证明书格式
2014/10/01 职场文书
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL