?
? 这次 v3.4 主要还是修改一些细节 bug,同时新增了 destroy 方法用于一些特殊需求中执行树的销毁操作,并且这次在制作 destroy 方法的时候无意间发现了 IE9 的内存泄漏问题,并且针对这个问题对 zTree 内部的 zId 和 节点cache的存储方式 进行了适当修改,以减少 IE9 的内存泄漏问题。
? 请注意:jquery.ztree.all 文件中 仅仅包含 core、excheck、exedit 这三个 js 包; 对于 exhide 以及以后推出的 扩展包都不会包含在 jquery.ztree.all 文件中。
? 如果需要使用,请自行添加。
?
?
? 在线操作演示:http://www.ztree.me/v3/demo.php#_101
? 快速下载地址:http://code.google.com/p/jquerytree/downloads/list
下面是 v3.4 的修改记录:
? ?* 【增加】Demo ―― OutLook 样式的左侧菜单 (http://www.ztree.me/v3/demo.php#_513)
? ?* 【增加】清空 zTree 的方法 $.fn.zTree.destory(treeId) & zTree.destory()
? ?* 【修改】core核心文件内 _eventProxy 方法中获取 tId 的方法,提高 DOM 的灵活性
? ?* 【修改】初始化时 多层父节点的 checkbox 半选状态计算错误的 bug
? ?* 【修改】同时选中父、子节点后,利用 getSelectedNodes 获取选中节点并利用 removeNode 删除时报错的 bug
? ?* 【修改】treeNode.chkDisabled / nocheck 属性,支持字符串格式的 "false"/"true"
? ?* 【修改】异步加载模式下无法利用 server 返回 xml 并且 在 dataFilter 中继续处理的 bug
? ?* 【修改】title 只允许设置为 string 类型值的问题。 修正后允许设置为 number 类型的值
? ?* 【修改】zId 计数规则 & Cache 保存,减少 IE9 的 bug 造成的内存泄漏
? ?* 【修改】API 页面搜索功能导致 IE 崩溃的 bug
?
火狐报:TypeError: $.fn.zTree is undefined [在此错误处中断]
$.fn.zTree.init($("#tree"), setting, zNodes);//初始化树对象
在IE上提示:$.fn.zTree为空或不是对象,
js的加载顺序:zTreeStyle.css,jquery-1.7.2.min.js,jquery.ztree.core-3.4.js
请指点一下
**********************************************************
$(function(){
//单位树
var setting;
var zNodes =[
{name:"知识帮助导航栏", id:"-1", isParent:true} //初始化一个顶层默认节点
];
setting = {
async: { //异步加载
enable: true,
url: "${path}/callcenter/listNextKN.html",//异步加载URL
autoParam: ["id=0"]//需要传递的参数
},
expandSpeed: ""
};
$.fn.zTree.init($("#tree"), setting, zNodes);//初始化树对象
})
火狐报:TypeError: $.fn.zTree is undefined [在此错误处中断]
...
你说的不需要是什么意思? 完全不显示吗? 那么只需要不要生成3级的数据就是了
开发部这个结点下,有A,B,C三个人,A,B,C三个人前都有checkbox,当
分别勾选a,b,c三个人的后,并且点保存,这时候,因为全选了开发部下的三个人了,所以这个时候,要返回值是“开发部”这个值,但如果只选a,b两个人,则不用返回
开发部这个值,因为不是全选;我的思路是这样,但发现有问题:
1) 在开发部前面加一个全选的checkbox,当点这个checkbox后,则自然全选了下面的,A,B,C三个人了,这个时候很好办;但问题是,好像加入全选后,假如用户又去掉b的这个人前面的checkbox,则开发部这个前面的checkbox好像不会自动去掉。
2) 我目前是在oncheck事件中判断的,问题化归为:如果判断某个结点下的所有子结点已经勾选?如果都勾选,则返回其父结点的值。如果用javascript+ztree本身的API去实现,有什么思路么?
开发部这个结点下,有A,B,C三个人,A,B,C三个人前都有checkbox,当
分别勾选a,b,c三个人的后,并且点保存,这时候,因为全选了开发部下的三个人了,所以这个时候,要返回值是“开发部”这个值,但如果只选a,b两个人,则不用返回
开发部这个值,因为不是全选;我的思路是这样,但发现有问题:
1) 在开发部前面加一个全选的checkbox,当点这个checkbox后,则自然全选了下面的,A,B,C三个人了,这个时候很好办;但问题是,好像加入全选后,假如用户又去掉b的这个人前面的checkbox,则开发部这个前面的checkbox好像不会自动去掉。
2) 我目前是在oncheck事件中判断的,问题化归为:如果判断某个结点下的所有子结点已经勾选?如果都勾选,则返回其父结点的值。如果用javascript+ztree本身的API去实现,有什么思路么?
首先你可以利用 半勾选状态去判断,默认情况下只有子节点全部取消勾选后才会自动取消父节点的勾选。 参考:treeNode.getCheckStatus
check_count.html(demo中的例子)
function onCheck(e, treeId, treeNode) { count(); //获得当前结点的父结点 var halfCheck = treeNode.getParentNode().getCheckStatus(); //alert(halfCheck.half); var fullCheck=treeNode.getParentNode().checked; if (halfCheck.half==false&&halfCheck.checked==true) { alert("父亲结点被勾选"+treeNode.getParentNode().name); } }
能否实现如下的结构:
attachment:"
{attachmentId:1,attachmentname:"f6e71004-8487-41f7-ac18-b6fac9860753.pdf"},
{attachmentId:2,attachmentname:"1e40868d-0d7a-41f4-8018-9c2f29ad716c.pdf"}
"
?就是一个结点中,嵌套了多个?
能否实现如下的结构:
attachment:"
{attachmentId:1,attachmentname:"f6e71004-8487-41f7-ac18-b6fac9860753.pdf"},
{attachmentId:2,attachmentname:"1e40868d-0d7a-41f4-8018-9c2f29ad716c.pdf"}
"
?就是一个结点中,嵌套了多个?
zTree 内部就是嵌套格式的, 提供简单数据模式主要是为了方便用户生成; 如果你直接提供嵌套格式的数据完全没有问题!!!!
只不过如果你不想使用zTree 默认的属性,请参考 setting.data.key 下面的属性定义
能否实现如下的结构:
attachment:"
{attachmentId:1,attachmentname:"f6e71004-8487-41f7-ac18-b6fac9860753.pdf"},
{attachmentId:2,attachmentname:"1e40868d-0d7a-41f4-8018-9c2f29ad716c.pdf"}
"
?就是一个结点中,嵌套了多个?
zTree 内部就是嵌套格式的, 提供简单数据模式主要是为了方便用户生成; 如果你直接提供嵌套格式的数据完全没有问题!!!!
只不过如果你不想使用zTree 默认的属性,请参考 setting.data.key 下面的属性定义
THX,已经顺利解决,把上面的取出来,手工转多一次为json就可以了
并发了邮件给你。
我在标题哪里加了一层标签,如下:
if (selectFlag) {
map.put("name", "<span class='select_yes'> " + map.get("name") + "</span>");
map.put("title", "(可选)" + rs.getString("fullname"));
} else {
map.put("name", "<span class='select_not'> " + map.get("name") + "</span>");
map.put("title", "(不可选)" + rs.getString("fullname"));
}
我在标题哪里加了一层标签,如下:
if (selectFlag) {
map.put("name", "<span class='select_yes'> " + map.get("name") + "</span>");
map.put("title", "(可选)" + rs.getString("fullname"));
} else {
map.put("name", "<span class='select_not'> " + map.get("name") + "</span>");
map.put("title", "(不可选)" + rs.getString("fullname"));
}
去掉我加这层标签后就没问题了,请问怎么处理?
<TD width=770px align=left valign=top><IFRAME ID="testIframe" Name="testIframe" FRAMEBORDER=0
SCROLLING=AUTO width=100% height=600px SRC="core/standardData.html" onload="loadReady();" ></IFRAME></TD>
此处 onload="loadReady();" 是不需要的吧?
因为上面
demoIframe = $("#testIframe");
demoIframe.bind("load", loadReady);
并发了邮件给你。
已经回复了, 最近实在太忙,不能及时回复,请见谅
我在标题哪里加了一层标签,如下:
if (selectFlag) {
map.put("name", "<span class='select_yes'> " + map.get("name") + "</span>");
map.put("title", "(可选)" + rs.getString("fullname"));
} else {
map.put("name", "<span class='select_not'> " + map.get("name") + "</span>");
map.put("title", "(不可选)" + rs.getString("fullname"));
}
去掉我加这层标签后就没问题了,请问怎么处理?
关键是你这里面的 map 是做什么用的? 是 节点的数据吗? 出现问题时,是否页面有报错信息??
<TD width=770px align=left valign=top><IFRAME ID="testIframe" Name="testIframe" FRAMEBORDER=0
SCROLLING=AUTO width=100% height=600px SRC="core/standardData.html" onload="loadReady();" ></IFRAME></TD>
此处 onload="loadReady();" 是不需要的吧?
因为上面
demoIframe = $("#testIframe");
demoIframe.bind("load", loadReady);
这个。。。应该是疏忽了。。。感谢你的细心。
我在标题哪里加了一层标签,如下:
if (selectFlag) {
map.put("name", "<span class='select_yes'> " + map.get("name") + "</span>");
map.put("title", "(可选)" + rs.getString("fullname"));
} else {
map.put("name", "<span class='select_not'> " + map.get("name") + "</span>");
map.put("title", "(不可选)" + rs.getString("fullname"));
}
去掉我加这层标签后就没问题了,请问怎么处理?
关键是你这里面的 map 是做什么用的? 是 节点的数据吗? 出现问题时,是否页面有报错信息??
你好,map就是为了生成json格式数据而已,没有报错,在源码里调试了,节点选中后,不会在触发双击事件了
你好,map就是为了生成json格式数据而已,没有报错,在源码里调试了,节点选中后,不会在触发双击事件了
非常感谢,测试了一下,这个应该属于bug,我会跟随下个版本发布时修正的。