jquery.simple.tree插件 更简单,兼容性更好的无限树插件


Posted in Javascript onSeptember 03, 2010

效果如下:

选择:
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
拖拽:
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
jquery.simple.tree.官网地址: http://news.kg/wp-content/uploads/tree/(貌似已经打不开),不过因为操作比较简单,所以我们暂且用之。
前面讲过jquery EasyUI Tree插件,简单易用,但经过测试仍有诸多缺点,

例如:

1、兼容IE8的AJAX有问题。

2、如果异步返回数据较慢,将可能导致加载失败。

3、我们只使用其中的Tree功能,但其体积实在有点庞大。...
而我们需要的是,兼容性好,异步,体积小(用Tree的场景实在比较少,所以还是专用的代码文件比较好。)
好了,我们开始jquery.simple.tree之旅:
首先,要加载文件,一共三个:CSS、Jquery主文件、还有其本身的js文件;
然后,是定义Tree的代码;
最后,写出这根树的根节点HTML代码;
前台代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
<title>区域选择</title> 
<link rel="stylesheet" href="/js/simpletree/jquery.simple.tree.css" /> 
<script type="text/javascript" src="/js/jquery1.4.2.min.js"></script> 
<script type="text/javascript" src="/js/simpletree/jquery.simple.tree.js"></script> 
<script type="text/javascript"> 
var simpleTreeCollection; 
$(document).ready(function(){ 
simpleTreeCollection = $('.simpleTree').simpleTree({ 
autoclose: true, 
afterClick:function(node){ 
alert("您选择了:" + $('span:first',node).text() + "id为:" + $('span:first',node).attr("id").substr(2));//此处为何要“.substr(2)”,是因为特殊原因,稍后可以得到解释.如果你仅仅需要取文字,这里可以不取ID。 
}, 
afterDblClick:function(node){ 
//alert("text-"+$('span:first',node).text());//双击事件 
}, 
afterMove:function(destination, source, pos){ 
//alert("destination-"+destination.attr('id')+" source-"+source.attr('id')+" pos-"+pos);//拖拽事件 
}, 
afterAjax:function() 
{ 
//alert('Loaded'); 
}, 
animate:true 
//,docToFolderConvert:true 
}); 
}); 
</script> 
</head> 
<body> 
<ul class="simpleTree"> 
<li class="root"><span>区域选择</span> 
<ul> 
<li id="root0" class="open"><span>中国</span> 
<ul class="ajax"> 
<li id='0'>{url:/common/GetGroupHtmlByPid.ashx?pid=0}</li> 
</ul> 
</li> 
</ul> 
</li> 
</ul> 
</body> 
</html>

后台响应代码:
GetGroupHtmlByPid.ashx.cs
public class GetGroupHtmlByPid : IHttpHandler 
{ 
GroupManager group; 
public void ProcessRequest(HttpContext context) 
{ 
context.Response.ContentType = "text/plain"; 
int parentId = -1; 
int type = 0; 
string resultStr = string.Empty; 
if (!context.Request.QueryString["pid"].IsNullOrEmpty()) 
{ 
Int32.TryParse(context.Request.QueryString["pid"], out parentId); 
} 
if (!context.Request.QueryString["type"].IsNullOrEmpty()) 
{ 
Int32.TryParse(context.Request.QueryString["type"], out type); 
} 
if (parentId >= 0) 
{ 
try 
{ 
group = new GroupManager((GroupType)type); 
var subAg = group.AllGroups.Where(c => c.ParentId == parentId); 
resultStr += "<ul>"; 
foreach (Base_group item in subAg) 
{ 
resultStr += "<li id=\"" + item.GroupId + "\"><span id=\"1_" + item.GroupId + "\">" + item.GroupName + "</span>";//这里可以解释前台代码为何要.substr(2); 
resultStr += "<ul class='ajax'><li>{url:/common/GetGroupHtmlByPid.ashx?pid=" + item.GroupId + "}</li></ul>"; 
resultStr += "</li>"; 
} 
resultStr += "</ul>"; 
} 
catch (Exception ex) 
{ 
} 
} 
context.Response.Write(resultStr); 
} 
public bool IsReusable 
{ 
get 
{ 
return false; 
} 
} 
}

后台看起来有点别扭,因为这个插件本身只支持HTML节点加载的,不过网上有人进行扩展了,用了JSON,不过个人感觉这对速度影响实在微乎其微,还是直接封装出HTML代码的。
总结一下jquery.simple.tree插件的优缺点:
优点:体积小,兼容性高,可异步,支持拖拽。
缺点:如果初始化的时候就需要异步加载,则需要手动更改它的几行代码。例如我的例子中。
本插件还有一个特别的功能,支持拖拽,可以用于后台维护无限分类,非常方便,有待读者自己去发掘,希望本文能够抛砖引玉,对你有所帮助!
源插件下载地址:http://plugins.jquery.com/project/SimpleTree
我的修改后的下载地址:simpletree.rar
我只修改了2行代码,以便在第一次初始化时就加载异步的内容。
Javascript 相关文章推荐
javascript两种function的定义介绍及区别说明
May 02 Javascript
js改变鼠标的形状和样式的方法
Mar 31 Javascript
详解iframe与frame的区别
Jan 13 Javascript
jQuery实现放大镜效果实例代码
Mar 17 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
Mar 30 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
Jun 17 Javascript
浅谈js中对象的使用
Aug 11 Javascript
使用js获取伪元素的content实例
Oct 24 Javascript
react native 文字轮播的实现示例
Jul 27 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
Apr 08 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
Nov 07 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
Aug 04 Javascript
基于JQuery的6个Tab选项卡插件
Sep 03 #Javascript
Jquery中dialog属性小记
Sep 03 #Javascript
javascript中使用css需要注意的地方小结
Sep 01 #Javascript
js截取函数(indexOf,join等)
Sep 01 #Javascript
qTip 基于JQuery的Tooltip插件[兼容性好]
Sep 01 #Javascript
jQuery选中select控件 无法设置selected的解决方法
Sep 01 #Javascript
JavaScript的类型转换(字符转数字 数字转字符)
Aug 30 #Javascript
You might like
PHP中Session引起的脚本阻塞问题解决办法
2014/04/08 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
基于php判断客户端类型
2016/10/14 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
ArrayList类(增强版)
2007/04/04 Javascript
checkbox 多选框 联动实现代码
2008/10/22 Javascript
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
微信小程序一周时间表功能实现
2019/10/17 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
Python数据可视化正态分布简单分析及实现代码
2017/12/04 Python
Python3最长回文子串算法示例
2019/03/04 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
2020/08/24 HTML / CSS
你的自行车健身专家:FaFit24
2016/11/16 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
怎么写自荐书范文
2014/02/12 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
奖学金感谢信
2015/01/21 职场文书
黄埔军校观后感
2015/06/10 职场文书
婚宴主持词
2015/06/30 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python
详解OpenCV曝光融合
2022/04/29 Python
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python