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的IE和Firefox兼容性汇编(zz)
Feb 02 Javascript
了解了这些才能开始发挥jQuery的威力
Oct 10 Javascript
手机平板等移动端适配跳转URL的js代码
Jan 25 Javascript
不得不分享的JavaScript常用方法函数集(上)
Dec 23 Javascript
JS判断元素是否在数组内的实现代码
Mar 30 Javascript
AngularJS 异步解决实现方法
Jun 12 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
Aug 14 jQuery
微信小程序支付之c#后台实现方法
Oct 19 Javascript
vue和webpack打包项目相对路径修改的方法
Jun 15 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
May 23 Javascript
微信小程序学习总结(五)常见问题实例小结
Jun 04 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
Nov 16 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
如何在PHP中使用Oracle数据库(2)
2006/10/09 PHP
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
微信小程序实现联动选择器
2019/02/15 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
函授毕业自我鉴定
2014/02/04 职场文书
争论的故事教学反思
2014/02/06 职场文书
课例研修方案
2014/05/31 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
大学生自我推荐信范文
2015/03/24 职场文书