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 相关文章推荐
Dom与浏览器兼容性说明
Oct 25 Javascript
AngularJS学习笔记之基本指令(init、repeat)
Jun 16 Javascript
jQuery div拖拽用法实例
Jan 14 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 Javascript
详解JavaScript常量定义
Jan 03 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
Apr 24 Javascript
微信小程序 同步请求授权的详解
Aug 04 Javascript
ES6学习教程之对象字面量详解
Oct 09 Javascript
jQuery自动或手动图片切换效果
Oct 11 jQuery
深入浅析ES6 Class 中的 super 关键字
Oct 20 Javascript
详解extract-text-webpack-plugin 的使用及安装
Jun 12 Javascript
vue watch关于对象内的属性监听
Apr 22 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 字符串替换的方法
2012/01/10 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014/04/26 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
对python中UDP,socket的使用详解
2019/08/22 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
2019/10/09 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
学习十八大精神心得体会
2013/12/31 职场文书
百年校庆节目主持词
2014/03/27 职场文书
小学教师年度个人总结
2015/02/05 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers
Android基于Fresco实现圆角和圆形图片
2022/04/01 Java/Android
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技