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 相关文章推荐
小议Function.apply() 之一------(函数的劫持与对象的复制)
Nov 30 Javascript
JavaScrip单线程引擎工作原理分析
Sep 04 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
Nov 28 Javascript
SeaJS入门教程系列之完整示例(三)
Mar 03 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
Jul 29 Javascript
jQuery+html5实现div弹出层并遮罩背景
Apr 15 Javascript
JS实现的左侧竖向滑动菜单效果代码
Oct 19 Javascript
jQuery前端开发35个小技巧
May 24 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
Jun 20 Javascript
JavaScript ES5标准中新增的Array方法
Jun 28 Javascript
AngularJS 验证码60秒倒计时功能的实现
Jun 05 Javascript
Nuxt 项目性能优化调研分析
Nov 07 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
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
Javascript的一种模块模式
2008/03/22 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
浅谈下拉菜单中的Option对象
2015/05/10 Javascript
如何使用jquery修改css中带有!important的样式属性
2016/04/28 Javascript
js捕捉键盘事件和按键键值的方法
2016/10/10 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
Python中实现结构相似的函数调用方法
2015/03/10 Python
Python中实现参数类型检查的简单方法
2015/04/21 Python
Python制作词云的方法
2018/01/03 Python
python进程和线程用法知识点总结
2019/05/28 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
python基于pdfminer库提取pdf文字代码实例
2019/08/15 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
产品工艺师的岗位职责
2013/11/15 职场文书
通信工程毕业生求职信
2013/11/16 职场文书
作风转变心得体会
2014/09/02 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
2014年变电站工作总结
2014/12/19 职场文书
检讨书范文
2015/01/27 职场文书
小王子读书笔记
2015/06/29 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js
Python 绘制多因子柱状图
2022/05/11 Python