`
zTreeAPI
  • 浏览: 348330 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

zTree v3.0 beta Bug 汇总

阅读更多

    v3.0 改动很大,而且计划这次 从 beta 到 正式版至少需要1-2个月的时间进行沉淀,因为这期间一方面需要修正bug、增加适当功能。同时也在努力争取正式版时推出英文版的 Demo 和 API,所以专门开篇文章,用来发布 v3.0 beta 中已经发现的 bug 和解决方案,帮助这期间遇到 bug 的朋友解决问题。


    在发布正式版之前,查看 v3.0 beta 的改动计划以及 Bug 修正都在这篇博文中进行记录。

 

[最后修改日期 2012-01-04] ---- 已进入 最后测试阶段

 

---【增加】---

1、【增加】setting.check.autoCheckTrigger 默认值 false,可以设置联动选中时是否触发 onCheck 回调函数

    制作完毕,随v3.0正式版发布

 

2、【增加】setting.callback.beforeEditName 回调函数,以保证用户可以捕获点击编辑按钮的事件

    制作完毕,随v3.0正式版发布

 

3、【增加】treeNode.checkDisable 属性,显示 checkbox 但是用户无法修改 checkbox 状态,并且该checkbox 会影响父节点的 checkbox 的半选状态

    制作 完毕,随v3.0正式版发布

 

4、【增加】setting.check.nocheckInherit 属性,用户设置子节点继承 nocheck 属性,用于批量初始化节点,不适用于已经显示的节点

    制作 完毕,随v3.0正式版发布

 

5、【增加】setting.edit.drag.autoExpandTrigger 默认值 false,可以设置自动展开、折叠操作时是否触发 onExpand 回调函数

    制作 完毕,随v3.0正式版发布

 

6、【增加】setting.view.nameIsHTML 默认值 false,允许用户对 name 设置 DOM 对象

    制作 完毕,随v3.0正式版发布

 

7、【增加】类似于Ext.tree.TreeFilter类, 可以实现树节点的过滤,隐藏不匹配过滤条件的节点

由于时间原因,此功能等正式版发布后,制作 zTree 扩展工具时一起开发。

 

8、【增加】treeNode.click 属性的说明文档!
    制作 完毕,随v3.0正式版发布

9、【增加】treeObj.setChkDisabled 方法用于设置 checkbox / radio disabled 状态

    制作完毕,随v3.0正式版发布


10、【增加】treeNode.halfCheck 属性,用于强制设定节点的半选状态
    制作完毕,随v3.0正式版发布

---【修改】---

1、【修改】异步加载 & 编辑功能 共存时,拖拽节点 或 增加节点 导致 ie 上报错的 bug (apply 方法引起)

    解决方案:将 jquery.ztree.core-3.0.js 文件中 Line 682 的 return fun.apply(zt, param);  修改为 return fun.apply(zt, param?param:[]);

 

2、【修改】zTreeStyle 样式冲突

    解决方案:将 zTreeStyle 的第 82 行 ul.zTreeDragUL 修改为  ul.ztree.zTreeDragUL,并且将该行的 overflow:auto; 修改为 overflow:hidden;

 

3、【修改】setting.data.key.title 默认值设置为 "",初始化时自动赋值为 setting.data.key.name 这样可避免希望 title 与 name 一致的用户反复设置参数

    修正完毕,随v3.0正式版发布

 

4、【修改】点击叶子节点的连接线会触发 expand 事件的 bug

    修正完毕,随v3.0正式版发布

 

5、【修改】IE 下 点击叶子节点连线会出现虚线框的 bug

    修正完毕,随v3.0正式版发布

 

6、【修改】updateNode 导致 checkbox 半选状态错误的 bug

    解决方案:将 jquery.ztree.excheck-3.0.js 文件中 Line 470 的 if (node.nocheck !== true) { 修改为 if (node.nocheck !== true && node[childsKey] && node[childsKey].length > 0) {

     原解决方案会引起勾选关联的错误,正确解决方案:

     (1) 保留 Line 470 的 if (node.nocheck !== true) {

     (2) 将 Line 472 的 node.check_Child_State = value ? 2 : 0; 修改为 node.check_Child_State = (node[childsKey] && node[childsKey].length > 0) ? (value ? 2 : 0) : -1;

 

7、【修改】checkNode 方法实现 toggle 功能, 取消 expandAll 方法 toggle 功能

    修正完毕,随v3.0正式版发布

 

8、【修改】zTree 内鼠标移动会抢页面上 input 内的焦点的 bug

 

    解决方案:请将 jquery.ztree.core-3.0.js 中 621行 的 if (x) { 修改为  if (x && $("input:focus").length == 0) { 

    以上解决方案会导致 IE6 下编辑模式出现异常 (因此需要用 try catch 将 这个 if 段落包起来)。

 

9、【修改】beforeRename / onRename 的触发方式——即使名称内容未改变也会触发,便于用户配合 beforeEditName 捕获编辑状态的结束,赋予用户更多调整规则的权利

    修正完毕,随v3.0正式版发布

 

10、【修改】与 easyUI 共存时无法拖拽的 bug

    解决方案:请将 Line 442左右的 if (settings[s].edit.enable && settings[s].treeId != setting.treeId 替换为 if (settings[s].treeId && settings[s].edit.enable && settings[s].treeId != setting.treeId

 

11、【修改】beforeRename 在 Firefox 下如果利用 alert,会触发两次的 bug

    修正完毕,随v3.0正式版发布

    补充:重新修正了一下,beforeName如果return false,将不会强行让input 获取焦点,这样可以避免blur导致的反复验证。 同时使用editName 方法可以主动设置 input 获取焦点,便于控制

 

12、【修改】checkNode/expandNode/removeNode 方法,默认不触发回调函数,恢复 v2.6 的默认状态,同时增加 callbackFlag 参数,设置为 true 时,可以触发回调函数

    修正完毕,随v3.0正式版发布

 

13、【修改】IE9下“根据参数查找节点”的Demo 报错:行14 重新声明常量属性

    修正完毕,随v3.0正式版发布(Demo自身问题,无意间定义了变量名为 history 导致!)

 

14、【修改】初始化 zTree 时 onNodeCreated 事件回调函数中无法 用 getZTreeObj 获取 zTree 对象的 bug

    修正完毕,随v3.0正式版发布

 

15、【修改】setting.edit.drag.prev / next / inner 参数,增加被拖拽的节点集合

    修正完毕,随v3.0正式版发布

 

16、【修改】异步加载模式下,otherParam 使用 Array 数组会出错的 bug。例如: ["id", "1", "name", "test"]

   解决方案1:请先使用 JSON 数据进行设置,不要使用 Array 数组

   解决方案2:请将 core 的 js 代码中 asyncParamOther 替换为 async.otherParam 即可

 

17、【修改】FireFox 下多棵树之间无法正常拖拽的 bug

    修正完毕,随v3.0正式版发布

 

18、【修改】exedit 中调用 excheck库的方法时没有进行容错处理,导致如果只加入 exedit 而没有 excheck的时候,会出现 js 错误

    修正完毕,随v3.0正式版发布

 

19、【修改】显示 checkbox 的 zTree 在编辑模式下,移动节点不会更新父节点半选状态的 bug

    修正完毕,随v3.0正式版发布

 

20、【修改】treeNode.childs --> children; treeObject.removeChilds --> removeChildNodes; setting.data.key.childs --> children(英文不好惹的祸!抱歉了!)

    修正完毕,随v3.0正式版发布

 

21、【修改】onRemove 回调中得到的 treeNode 还可以查找 preNode、nextNode 的bug。 修正后,getPreNode 和 getNextNode 都返回 null; 为了便于查找父节点,getParentNode 仍保留

    修正完毕,随v3.0正式版发布

 

22、【修改】简单数据模式下,如果 id 与 pId 的值相同会导致该节点无法正常加载的 bug

    修正完毕,随v3.0正式版发布

 

23、【修改】移动或删除中间节点会导致最后一个节点连接线图标变小的 bug

 

    修正完毕,随v3.0正式版发布

 

18
4
分享到:
评论
82 楼 zh.nicholas.liu 2011-10-18  
请问一下如何模拟点击一个树结点?
81 楼 zTreeAPI 2011-10-13  
mayitaiwan 写道
关于两个参数的问题,如果是固定写死的,那可以不让使用者传入,直接写在core.js里
我没觉得哪个参数是url必须得


你这种方法我不太建议哟! 虽然软件都是开源的,便于编程者修改,但如果连这种简单的功能都直接在核心文件内修改,是极其不利于 升级的。难不成每次升级你都要找到原先修改的地方去重新修改一遍? 除非你压根不考虑升级那就无所谓了。
80 楼 zTreeAPI 2011-10-13  
mayitaiwan 写道
zTreeAPI 写道
mayitaiwan 写道
麻烦解释一下为什么要有两个!!
if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) {

  这是为了优化考虑的。 如果没有设置捕获 onNodeCreated 并且也没有设置 addDiyDom 功能,那么就不需要遍历已初始化的节点去触发 这两个回调了。


不用!!不行吗?


哈哈哈哈,我错了!! 原来你质疑的是 "!!"
应该说更像是个习惯吧,这样会更严谨一些,尤其在赋值的时候,能够保证得到一个boolean的对象.

随便搜了两个文章,说的比较详细:
http://xingda1989.iteye.com/blog/1127781
http://zhidao.baidu.com/question/156360735.html?push=ql
79 楼 zTreeAPI 2011-10-13  
mayitaiwan 写道
挑了一些问题,还不知道是不是我的有理由,总的还是很欣赏你的这棵树,读代码过程中学到很多东西,说这些的意思是希望别太介意我提问的方式


意见随便提,我也不是神仙,zTree能做到现在这样也多亏了大家提意见的。
78 楼 mayitaiwan 2011-10-12  
zTreeAPI 写道
mayitaiwan 写道
麻烦解释一下为什么要有两个!!
if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) {

  这是为了优化考虑的。 如果没有设置捕获 onNodeCreated 并且也没有设置 addDiyDom 功能,那么就不需要遍历已初始化的节点去触发 这两个回调了。


不用!!不行吗?
77 楼 mayitaiwan 2011-10-12  
挑了一些问题,还不知道是不是我的有理由,总的还是很欣赏你的这棵树,读代码过程中学到很多东西,说这些的意思是希望别太介意我提问的方式
76 楼 zTreeAPI 2011-10-12  
mayitaiwan 写道
麻烦解释一下为什么要有两个!!
if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) {

  这是为了优化考虑的。 如果没有设置捕获 onNodeCreated 并且也没有设置 addDiyDom 功能,那么就不需要遍历已初始化的节点去触发 这两个回调了。
75 楼 mayitaiwan 2011-10-12  
关于两个参数的问题,如果是固定写死的,那可以不让使用者传入,直接写在core.js里
我没觉得哪个参数是url必须得
74 楼 mayitaiwan 2011-10-12  
我的配置没有问题,
$.ajax({
type: setting.async.type,
url: tools.apply(setting.async.url, [setting.treeId, node], setting.async.url),
data: tmpParam,
dataType: setting.async.dataType,
success: function(msg) {
alert(msg)
var newNodes = [];
try {
我alert了msg,显示的就是我要的那段字符串

73 楼 mayitaiwan 2011-10-12  
麻烦解释一下为什么要有两个!!
if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) {
72 楼 zTreeAPI 2011-10-12  
mayitaiwan 写道
另外,你的代码注释太少,阅读很困难
我在做一个ajax调用,没有成功,不得不通读代码
....

1、关于代码注释的问题,非常非常抱歉,主要还是时间太紧,不过已经是尽可能在页面上加上一些代码的说明, 并且尽可能把每个Demo 做的功能最单一。

2、如果你把 url 换成 test.txt 就能成功,用 tree.do 就不能成功,那么50%的可能是 tree.do 的路径有问题,另外50%的可能是参数传递有误,导致后台报错。

3、请你用 firebug 或 chrome 的开发人员调试工具进行网络监控,看看ajax的异步请求是否正确,提交的参数是否正常,这样很容易就发现问题了。

如果还有问题请继续沟通,不用客气
71 楼 zTreeAPI 2011-10-12  
mayitaiwan 写道
...


1、虽然决定权在我,但还要尽可能保证以前的朋友便于升级,方便使用,所以还是要尽可能保留原先的数据格式。

2、autoParam 和 otherParam 是两种参数,一套是动态的,另一套是固定写死的

3、这两个设置只是为了尽可能提供方便,但也不是必须设置的参数,你只需要找寻你习惯使用的方法即可了。

4、你给的例子我也看了一下,一方面不知道如何让用户通过设置,提供 p 的内容? 另一方面貌似没有考虑otherParam 这种固定参数的内容。
70 楼 mayitaiwan 2011-10-12  
另外,你的代码注释太少,阅读很困难
我在做一个ajax调用,没有成功,不得不通读代码
我的调用是这样的

index.jsp代码如下
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">   
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" href="css/demo.css" type="text/css">
<link rel="stylesheet" href="css/zTreeStyle/zTreeStyle.css" type="text/css">
<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="js/jquery.ztree.core-3.0.js"></script>
<!--  <script type="text/javascript" src="js/jquery.ztree.excheck-3.0.js"></script>
  <script type="text/javascript" src="js/jquery.ztree.exedit-3.0.js"></script>-->
<SCRIPT LANGUAGE="JavaScript">
<!--
var setting = {
treeId:'testtree',
async: {
enable: true,
url:"tree.do"
}
/*,
callback: {
beforeAsync: beforeAsync
}*/
};

function filter(treeId, parentNode, childNodes) {
if (!childNodes) return null;
for (var i=0, l=childNodes.length; i<l; i++) {
childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
}
return childNodes;
}
function beforeAsync(treeId, treeNode) {
return treeNode ? treeNode.level < 5 : true;
}

$(document).ready(function(){
$.fn.zTree.init($("#treeDemo"), setting);
});
//-->
</SCRIPT>
  </head>
 
  <body>
    <div class="zTreeDemoBackground left">
<ul id="treeDemo" class="ztree"></ul>
</div>
  </body>
</html>
tree.do返回的字符串为:
[{name:"f0",childs:[{name:"f01",childs:[{name:"s1"},{name:"s2"}]},{name:"f02",childs:[{name:"s3"},{name:"s4"}]}]}]

始终没有成功
如果用一个固定文件替换tree.do则可以成功,也就是说在index.jsp同目录下放一个tree.txt文件,内容同上,则可以成功
69 楼 mayitaiwan 2011-10-12  
mayitaiwan 写道
你好,有段代码很费解
var tmpParam = "";
for (i = 0, l = setting.async.autoParam.length; node && i < l; i++) {
var pKey = setting.async.autoParam[i].split("="), spKey = pKey;
if (pKey.length>1) {
spKey = pKey[1];
pKey = pKey[0];
}
tmpParam += (tmpParam.length > 0 ? "&": "") + spKey + "=" + node[pKey];
}
if (tools.isArray(setting.asyncParamOther)) {
for (i = 0, l = setting.asyncParamOther.length; i < l; i += 2) {
tmpParam += (tmpParam.length > 0 ? "&": "") + setting.async.otherParam[i] + "=" + setting.async.otherParam[i + 1];
}
} else {
for (var p in setting.async.otherParam) {
tmpParam += (tmpParam.length > 0 ? "&" : "") + p + "=" + setting.async.otherParam[p];
}
}

$.ajax({
type: setting.async.type,
url: tools.apply(setting.async.url, [setting.treeId, node], setting.async.url),
data: tmpParam,
dataType: setting.async.dataType,
success: function(msg) {
var newNodes = [];
try {
if (!msg || msg.length == 0) {
newNodes = [];
} else if (typeof msg == "string") {
newNodes = eval("(" + msg + ")");
} else {
newNodes = msg;
}
} catch(err) {}

if (node) node.isAjaxing = null;
view.setNodeLineIcos(setting, node);
if (newNodes && newNodes != "") {
newNodes = tools.apply(setting.async.dataFilter, [setting.treeId, node, newNodes], newNodes);
view.addNodes(setting, node, tools.clone(newNodes), !!isSilent);
} else {
view.addNodes(setting, node, [], !!isSilent);
}
setting.treeObj.trigger(consts.event.ASYNC_SUCCESS, [setting.treeId, node, msg]);
tools.apply(callback);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
view.setNodeLineIcos(setting, node);
if (node) node.isAjaxing = null;
setting.treeObj.trigger(consts.event.ASYNC_ERROR, [setting.treeId, node, XMLHttpRequest, textStatus, errorThrown]);
}
});
return true;
},

为什么要用两个setting.async.autoParam,setting.async.otherParam
用一个标准的参数形式直接给ajax函数不就ok了吗?

这段代码就是把两个参数的值合并一个参数字符串,给ajax的url吧,用一个解决就可以了啊,什么格式还不是你来定,用两个很费解
68 楼 zTreeAPI 2011-10-11  
mayitaiwan 写道
参数可直接用一种固定的格式,下面这段代码就是用一种标准的格式解决问题
var param = [{
name: 'page',
value: p.newp
}, {
name: 'rp',
value: p.rp
}, {
name: 'sortname',
value: p.sortname
}, {
name: 'sortorder',
value: p.sortorder
}, {
name: 'query',
value: p.query
}, {
name: 'qtype',
value: p.qtype
}];
if (p.params) {
for (var pi = 0; pi < p.params.length; pi++) {
param[param.length] = p.params[pi];
}
}
$.ajax({
type: p.method,
url: p.url,
data: param,
dataType: p.dataType,
success: function (data) {
g.addData(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
try {
if (p.onError) p.onError(XMLHttpRequest, textStatus, errorThrown);
} catch (e) {}
}
});

你好,autoParam 是动态拼接指定的数据属性当做参数, otherParam 是提供一些固定参数,而不是节点数据属性的数据。另外由于最开始是数组,后来又衍生支持 json 数据所以就成了现在的样子
67 楼 mayitaiwan 2011-10-10  
参数可直接用一种固定的格式,下面这段代码就是用一种标准的格式解决问题
var param = [{
name: 'page',
value: p.newp
}, {
name: 'rp',
value: p.rp
}, {
name: 'sortname',
value: p.sortname
}, {
name: 'sortorder',
value: p.sortorder
}, {
name: 'query',
value: p.query
}, {
name: 'qtype',
value: p.qtype
}];
if (p.params) {
for (var pi = 0; pi < p.params.length; pi++) {
param[param.length] = p.params[pi];
}
}
$.ajax({
type: p.method,
url: p.url,
data: param,
dataType: p.dataType,
success: function (data) {
g.addData(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
try {
if (p.onError) p.onError(XMLHttpRequest, textStatus, errorThrown);
} catch (e) {}
}
});
66 楼 mayitaiwan 2011-10-10  
你好,有段代码很费解
var tmpParam = "";
for (i = 0, l = setting.async.autoParam.length; node && i < l; i++) {
var pKey = setting.async.autoParam[i].split("="), spKey = pKey;
if (pKey.length>1) {
spKey = pKey[1];
pKey = pKey[0];
}
tmpParam += (tmpParam.length > 0 ? "&": "") + spKey + "=" + node[pKey];
}
if (tools.isArray(setting.asyncParamOther)) {
for (i = 0, l = setting.asyncParamOther.length; i < l; i += 2) {
tmpParam += (tmpParam.length > 0 ? "&": "") + setting.async.otherParam[i] + "=" + setting.async.otherParam[i + 1];
}
} else {
for (var p in setting.async.otherParam) {
tmpParam += (tmpParam.length > 0 ? "&" : "") + p + "=" + setting.async.otherParam[p];
}
}

$.ajax({
type: setting.async.type,
url: tools.apply(setting.async.url, [setting.treeId, node], setting.async.url),
data: tmpParam,
dataType: setting.async.dataType,
success: function(msg) {
var newNodes = [];
try {
if (!msg || msg.length == 0) {
newNodes = [];
} else if (typeof msg == "string") {
newNodes = eval("(" + msg + ")");
} else {
newNodes = msg;
}
} catch(err) {}

if (node) node.isAjaxing = null;
view.setNodeLineIcos(setting, node);
if (newNodes && newNodes != "") {
newNodes = tools.apply(setting.async.dataFilter, [setting.treeId, node, newNodes], newNodes);
view.addNodes(setting, node, tools.clone(newNodes), !!isSilent);
} else {
view.addNodes(setting, node, [], !!isSilent);
}
setting.treeObj.trigger(consts.event.ASYNC_SUCCESS, [setting.treeId, node, msg]);
tools.apply(callback);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
view.setNodeLineIcos(setting, node);
if (node) node.isAjaxing = null;
setting.treeObj.trigger(consts.event.ASYNC_ERROR, [setting.treeId, node, XMLHttpRequest, textStatus, errorThrown]);
}
});
return true;
},

为什么要用两个setting.async.autoParam,setting.async.otherParam
用一个标准的参数形式直接给ajax函数不就ok了吗?
65 楼 zTreeAPI 2011-10-06  
huxiaoyunhust 写道
你好,我遇到从后台获取ZTREE的选中节点的问题。我用隐藏域从前台获得zTree选中的节点传递给后台,但是打印出来结果却是
[object][object]说明数据确实传递过来了。
但是我需要具体的数据,这如何把它提取出来。请问有这方面的示例代码么?我找了很久也没找到。
谢谢。我用的是V2.6 版本。

你好,传递给后台的肯定是字符串,不可能直接把对象传过去的。 请你google 一下“如何将json对象传给后台”
64 楼 huxiaoyunhust 2011-10-06  
你好,我遇到从后台获取ZTREE的选中节点的问题。我用隐藏域从前台获得zTree选中的节点传递给后台,但是打印出来结果却是
[object][object]说明数据确实传递过来了。
但是我需要具体的数据,这如何把它提取出来。请问有这方面的示例代码么?我找了很久也没找到。
谢谢。我用的是V2.6 版本。
63 楼 zTreeAPI 2011-10-05  
txb2d 写道

<SCRIPT LANGUAGE="JavaScript">
		<!--
		var setting = {
			async: {
				enable: true,
				url:"../asyncData/getNodes.php",
				autoParam:["id", "name=n"],
				otherParam:{"otherParam":"zTreeAsyncTest"},
				dataFilter: filter
			},
			callback: {
				beforeAsync: beforeAsync,
				[color=red]OnAsyncSuccess:tt[/color]			}
		};

		function filter(treeId, parentNode, childNodes) {
			if (!childNodes) return null;
			for (var i=0, l=childNodes.length; i<l; i++) {
				childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
			}
			return childNodes;
		}
		function beforeAsync(treeId, treeNode) {
			return true;
			return treeNode ? treeNode.level < 5 : true;
		}
         [color=red]function tt(event, treeId, treeNode, msg) {[/color]          alert(msg);
		  document.write(msg);
           };
		$(document).ready(function(){
			$.fn.zTree.init($("#treeDemo"), setting);
		});
		//-->
	</SCRIPT>



OnAsyncSuccess 回调函数不被触发,求原因!

你好,请注意大小写(细节决定成败!)
是 onAsyncSuccess

相关推荐

    JQuery zTree v3.0

    zTree v3.0 正式版在功能、性能方便比 v2.x 版本都有了很多改善,尤其是性能方面。 但还要再提提醒大家,v3.0 在代码架构上的改动较大,所以升级 v2.x 版本的 zTree 必须要配合修改代码,不能仅仅升级 js 文件。

    JQuery zTree v3.0 下载

    zTree 是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件。它与 IE、FireFox、Chrome 等浏览器保持兼容,在一个页面内可同时生成多个Tree 实例,支持一次性静态生成和Ajax 异步加载两种方式,...

    zTree 3.0 实例下载

    **zTree 3.0 实例详解** zTree是一款基于JavaScript的树形插件,广泛应用于网页中的数据展示,如文件目录、组织架构等场景。zTree 3.0是其一个重要的版本,提供了丰富的功能和高度的自定义性。在实际开发中,拥有...

    JQuery树型菜单 zTree v2.6 beta

    **jQuery zTree v2.6 Beta 知识点详解** jQuery zTree 是一个基于 jQuery 的开源项目,专门用于实现交互式树形菜单。在 v2.6 beta 版本中,它提供了丰富的功能和优化,使得在网页开发中构建动态、可操作的树形结构...

    JQuery zTree v3.2 最新版

    zTree v3.0 将核心代码按照功能进行了分割,不需要的代码可以不用加载 采用了 延迟加载 技术,上万节点轻松加载,即使在 IE6 下也能基本做到秒杀 兼容 IE、FireFox、Chrome、Opera、Safari 等浏览器 支持 JSON 数据 ...

    JQuery zTree v2.6

    《JQuery zTree v2.6:文档与经典实例解析》 JQuery zTree是一款基于JavaScript的树形插件,其v2.6版本在功能和性能上进行了优化,为开发者提供了更强大的树形结构处理能力。这个版本的zTree不仅包含了完整的API...

    JQuery zTree v3.3

    zTree v3.3是该插件的一个版本,它在前一版本的基础上进行了优化和增强,旨在提供更高效、更稳定的服务。 在zTree v3.3中,核心功能包括: 1. **树结构展示**:zTree能够轻松地将复杂的数据结构转化为用户友好的...

    zTree 非常强大的树形控件

    、zTree v3.0 针对大数据量一次性加载进行了更深入的优化,实现了延迟加载功能,即不展开的节点不创建子节点的 Dom。 2)、对于每级节点最多一百左右,但总节点数几千甚至几万,且不是全部展开的数据,一次性加载的...

    zTree源码开发js

    •zTree v3.0 将核心代码按照功能进行了分割,不需要的代码可以不用加载 •采用了 延迟加载 技术,上万节点轻松加载,即使在 IE6 下也能基本做到秒杀 •兼容 IE、FireFox、Chrome、Opera、Safari 等浏览器 •支持 ...

    zTree v3.5.37 API 文档

    **zTree v3.5.37 API 文档** zTree 是一款基于 jQuery 的树形插件,广泛应用于网页中的树形菜单、目录结构展示等场景。v3.5.37 版本的 API 文档是理解并有效利用 zTree 功能的关键。 **一、设置(Setting)配置...

    JQuery zTree v3.5.14

    **jQuery zTree v3.5.14** 是一个基于jQuery的树形插件,它在Web开发中广泛用于创建交互式的树形结构。这个版本3.5.14是zTree的一个稳定版本,提供了丰富的功能和优化的性能。下面我们将深入探讨zTree的核心特性、...

    JQuery zTree v3.5.47.zip

    《JQuery zTree v3.5.47:构建动态树形菜单的利器》 JQuery zTree是一款基于JavaScript的开源库,专用于构建交互式的树形菜单。在这个版本v3.5.47中,它继续提供高效、灵活且功能丰富的解决方案,尤其适用于网页中...

    ztree树的部分js文件

    zTree v3.0 将核心代码按照功能进行了分割,不需要的代码可以不用加载 采用了 延迟加载 技术,上万节点轻松加载,即使在 IE6 下也能基本做到秒杀 兼容 IE、FireFox、Chrome、Opera、Safari 等浏览器 支持 JSON ...

    JQuery zTree v3.4 ztree

    10. **更新日志**:`更新日志3.x.txt` 文件记录了 v3.4 版本的改动和改进,这对于了解新功能和修复的 bug 非常有帮助。 11. **文件结构**: - `api`:包含了 zTree 的 API 文档,详细解释了每个方法和参数的用途。...

    zTree v3.3 API帮助chm格式

    zTree v3.3 API帮助 根据官方网站提供的帮助制作 因为原始文档不能直接在本地打开帮助查看麻烦,所以制作成了chm格式

    JQuery zTree v2.6 基本用法实例

    **jQuery zTree v2.6 基本用法实例** zTree是一款基于jQuery的树形插件,广泛应用于网站的导航、组织结构展示、权限管理等场景。它提供了丰富的API和CSS样式,使得开发者可以方便地进行定制化开发。在v2.6版本中,...

    JQuery zTree v2.6.zip

    《JQuery zTree v2.6 - 构建交互式树形菜单的高效工具》 JQuery zTree是一款基于jQuery库的开源项目,用于构建功能丰富的树形菜单。在v2.6版本中,它提供了更为强大的功能和优化的性能,以满足网页开发中对于动态...

    zTree-zTree_v3.5.17

    zTree是一款广泛应用于Web开发中的JavaScript树形菜单插件,其最新版本为zTree_v3.5.17。这个插件以其强大的功能、灵活的配置选项和良好的用户体验深受开发者喜爱。在本压缩包中,你将获得zTree的核心源码,以便于你...

Global site tag (gtag.js) - Google Analytics