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的标签智能验证实现代码
Dec 27 Javascript
使用jquery中height()方法获取各种高度大全
Apr 02 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
Aug 15 Javascript
jQuery DOM删除节点操作指南
Mar 03 Javascript
jQuery的基本概念与高级编程
May 14 Javascript
javaScript实现可缩放的显示区效果代码
Oct 26 Javascript
JavaScript模版引擎的基本实现方法浅析
Feb 15 Javascript
JS实现的幻灯片切换显示效果
Sep 07 Javascript
JS前端笔试题分析
Dec 19 Javascript
JavaScript实现图片放大镜效果
Jun 27 Javascript
Vue封装全局过滤器Filters的步骤
Sep 16 Javascript
使用Vant完成通知栏Notify的提示操作
Nov 11 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
咖啡常见的种类
2021/03/03 新手入门
数组与类使用PHP的可变变量名需要的注意的问题
2013/06/20 PHP
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
gulp教程_从入门到项目中快速上手使用方法
2017/09/14 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
python opencv 图像尺寸变换方法
2018/04/02 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
如何理解委托
2012/01/06 面试题
幼儿园大班开学教师寄语
2014/04/03 职场文书
培训讲师岗位职责
2014/04/13 职场文书
养成教育经验材料
2014/05/26 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
2014年班主任工作总结
2014/11/08 职场文书
2014年秘书工作总结
2014/11/25 职场文书
师范生小学见习总结
2015/06/23 职场文书
四年级数学教学反思
2016/02/16 职场文书
python基础之类方法和静态方法
2021/10/24 Python
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技