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 相关文章推荐
Autocomplete Textbox Example javascript实现自动完成成功
Aug 17 Javascript
js no-repeat写法 背景不重复
Mar 18 Javascript
javascript中encodeURI和decodeURI方法使用介绍
May 06 Javascript
JS 对输入框进行限制(常用的都有)
Jul 30 Javascript
iframe里的页面禁止右键事件的方法
Jun 10 Javascript
javascript模拟post提交隐藏地址栏的参数
Sep 03 Javascript
JavaScript取得WEB安全颜色列表的方法
Jul 14 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
Jun 27 Javascript
Vue中的数据监听和数据交互案例解析
Jul 12 Javascript
vue 解决文本框被键盘遮住的问题
Nov 06 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
Feb 07 Javascript
原生JS实现飞机大战小游戏
Jun 09 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创建PDF中文文档
2006/10/09 PHP
Yii实现简单分页的方法
2016/04/29 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
Extjs入门之动态加载树代码
2010/04/09 Javascript
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
jQuery使用方法
2017/02/04 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
Angular2安装angular-cli
2017/05/21 Javascript
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
python清除字符串里非数字字符的方法
2015/07/02 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
python 实现登录网页的操作方法
2018/05/11 Python
Django对models里的objects的使用详解
2019/08/17 Python
Python错误的处理方法
2020/06/23 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
Under Armour澳大利亚官网:美国知名的高端功能性运动品牌
2018/02/22 全球购物
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
大学生求职自荐信
2013/12/12 职场文书
旅游网创业计划书
2014/01/31 职场文书
运动会方阵解说词
2014/02/12 职场文书