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 相关文章推荐
jquery 插件学习(一)
Aug 06 Javascript
jquery实现的一个简单进度条效果实例
May 12 Javascript
JavaScript提高性能知识点汇总
Jan 15 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
Apr 19 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
Oct 10 Javascript
微信小程序 基础知识css样式media标签
Feb 15 Javascript
JS对象的深度克隆方法示例
Mar 16 Javascript
关于javascript获取内联样式与嵌入式样式的实例
Jun 01 Javascript
jQuery实现table表格信息的展开和缩小功能示例
Jul 21 jQuery
微信小程序页面调用自定义组件内的事件详解
Sep 12 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
Nov 20 Javascript
js实现文章目录索引导航(table of content)
May 10 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
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
告诉大家什么是JSON
2008/06/10 Javascript
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
Python 开发Activex组件方法
2009/11/08 Python
python实现定制交互式命令行的方法
2014/07/03 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
Python3处理HTTP请求的实例
2018/05/10 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
Python图像处理二值化方法实例汇总
2020/07/24 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
python3中确保枚举值代码分析
2020/12/02 Python
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
美国百年历史早餐食品供应商:Wolferman’s
2017/01/18 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
岗位廉洁从政承诺书
2014/03/27 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
应届生自荐信
2014/06/30 职场文书
迎新春趣味活动方案
2014/08/24 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
英文邀请函
2015/02/02 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
关于做家务的心得体会
2016/01/23 职场文书
HR必备:超全面的薪酬待遇管理方案!
2019/07/12 职场文书
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle