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 文件引入实现代码
Apr 23 Javascript
jQuery调取jSon数据并展示的方法
Jan 29 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
Aug 28 Javascript
js修改onclick动作的四种方法(推荐)
Aug 18 Javascript
javascript阻止事件冒泡和浏览器的默认行为
Jan 21 Javascript
Node.js 基础教程之全局对象
Aug 06 Javascript
JS实现键值对遍历json数组功能示例
May 30 Javascript
JavaScript实现简单轮播图效果
Dec 01 Javascript
angular 用Observable实现异步调用的方法
Dec 27 Javascript
微信小程序云开发之使用云函数
May 17 Javascript
vue+element模态框中新增模态框和删除功能
Jun 11 Javascript
Javascript confirm多种使用方法解析
Sep 25 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 分页函数multi() discuz
2009/06/21 PHP
php radio 单选框获取与保持值的实现代码
2010/05/15 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
js获取div高度的代码
2008/08/09 Javascript
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
node.js中的require使用详解
2014/12/15 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
Python简单计算文件夹大小的方法
2015/07/14 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
Python如何测试stdout输出
2020/08/10 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
100%植物性、有机、即食餐:Sakara Life
2018/10/25 全球购物
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
自荐书格式
2013/12/01 职场文书
大专学生求职自荐信
2014/07/06 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
python基础之文件操作
2021/10/24 Python