=ZTree v3.x (JQuery Tree插件) 更新日志= 为了更好的优化及扩展zTree, 因此决定升级为v3.x,并且对之前的v2.x不兼容,会有很多结构上的修改,对此深感无奈与抱歉,请大家谅解。 具体修改内容可参考: * [http://www.ztree.me/v3/api.php zTree v3.x API 文档] * [http://www.ztree.me/v3/demo.php#_101 zTree v3.x Demo 演示] * [http://www.ztree.me/v3/faq.php#_101 zTree v3.x 常见问题] *2015.02.15* v3.5.17 * 【修改】excheck 扩展中 removeClass 与 jQueryUI 1.9 冲突的问题,目前放弃 removeClass 方法 * 【修改】优化 exhide 扩展包初始化效率,避免数据多时 ie8 假死的 bug(感谢:https://github.com/sarxos) * 【修改】若干 Demo & API 的小错误 * 【修改】异步加载 低版本 IE 缓存严重的问题 * 【修改】在 onRename 回调中使用 updateNode 方法无效的问题 *2014.03.09* v3.5.16 * 【增加】onDragMove 回调,便于控制 zTree 节点与其他 DOM 的拖拽操作。(感谢 yumi301) * 【增加】针对 Mac 系统 Cmd 键的支持, Cmd 键 + 左键 也可以多选节点 * 【修改】使用 destory 方法销毁树以后,依然可以从 getZTreeObj 方法中获取到 zTree 对象的 bug。 * 【修改】onCheck 回调的 event,恢复为 zTree 自身的 event 事件,同时利用 srcEvent 传递原始 event 对象。(感谢 yumi301) * 【修改】拖拽多个节点时,超出 maxShowNodeNum 设置个数的节点会失去 被选择状态的 bug * 【修改】excheck & exedit 扩展包的 zTree 方法中 setting 数据错误导致 checkNode、updateNode 等方法操作 radio 失效的 bug * 【修改】不加载 exedit 扩展包时,使用 removeNode 方法无法触发 beforeRemove 和 onRemove 回调的 bug *2013.10.19* v3.5.15 * 【增加】setting.view.txtSelectedEnable 属性,满足部分项目中客户对于可以选择节点文本信息的强烈欲望。 * 【修改】 exhide 扩展包导致操作子节点后 isLastNode 属性异常 的bug * 【修改】 使用 cancelEditName 方法时,beforeRename & onRename 的 isCancel 始终为 false 的bug * 【修改】 编辑状态, beforeRename 回调 return false 时,提示信息导致 input 失去焦点后, 当树再次得到焦点时,让 input 自动获取焦点 * 【修改】 判断拖拽到节点的 标签中自定义的无 id 组件判断错误的bug * 【修改】 async_edit.html demo 中 添加按钮 显示的 bug * 【修改】 当没有开启异步加载模式下,对于没有子节点的父节点,即使设置 open=true 在初始化时也不会设置为展开状态的bug (对于异步加载模式下依然会强行设置为折叠状态) *2013.06.28* v3.5.14 * 【修改】 拖拽节点时 iframe 遮罩异常的bug * 【修改】 清空子节点后重新添加子节点无法显示的bug *2013.06.02* v3.5.13 * 【增加】beforeRename & onRename 增加 isCancel 参数,可以监控用户 ESC 取消编辑的事件 * 【修改】初始化时 radioType="all", 父节点未展开 且 子节点有被勾选,点击其他 radio 时,不会取消勾选该子节点的bug * 【修改】多棵树拖拽时,拖拽无效后会导致目标书已选择的节点清空的 bug。 * 【修改】多棵树拖拽时,会触发 addHoverDom 的bug。 * 【修改】多棵树拖拽时,由于 beforeDrog 或 prev / inner / next 返回 false 后未触发原始节点的 addHoverDom 的bug * 【修改】异步加载时,对于未加载子节点的父节点使用 expandNode 方法时, sonSign 设置为 true后,导致异步加载的节点无法正常显示的bug * 【修改】一次性加载全部数据,如果父节点 A 未展开,但下一级的父节点 A1 设置了 open=true 的时候,使用 expandAll 方法导致 A1 的下一级父节点出现重复的 bug * 【修改】增加对 iframe 的支持,可以只在主页面加载 zTree 的 js,在 iframe 内创建树 [https://github.com/zTree/zTree_v3/issues/7 Issue Info] * 【修改】引入 exhide 扩展包 导致页面上同时加载多棵树时,根节点 的 连接线图标出现异常 的 bug [http://tieba.baidu.com/p/2277416574] * 【修改】excheck & exedit 扩展包中事件代理获取节点 tId 的方法,保证适当修改 DOM 结构也能得到 tId *2013.03.11* v3.5.12 * 【修改】由于 jquery 1.9 中移除 event.srcElement 导致的 js 报错的bug。 * 【修改】在异步加载模式下,使用 moveNode 方法,且 moveType != "inner" 时,也会导致 targetNode 自动加载子节点的 bug * 【修改】对已经显示的节点(nochecked=true)使用 showNodes 或 showNode 方法后,导致勾选框出现的bug。 * 【修改】对已经隐藏的节点(nochecked=false)使用 hideNodes 或 hideNode 方法后,导致勾选框消失的bug。 * 【修改】getNodesByParamFuzzy 支持 大小写模糊。 * 【修改】className 结构,提取 _consts.className.BUTTON / LEVEL / ICO_LOADING / SWITCH,便于快速修改 css 冲突。 例如:与 WordPress 产生冲突后,直接修改 core 中的 "button" 和 "level" 即可。 Issue: https://github.com/zTree/zTree_v3/issues/2 *2013.01.28* v3.5.02 * 【增加】setting.check.chkDisabledInherit 属性,用于设置 chkDisabled 在初始化时子节点是否可以继承父节点的 chkDisabled 属性 * 【删除】内部 noSel 方法,使用 selectstart事件 和 "-moz-user-select"样式 处理禁止 节点文字被选择的功能 * 【修改】不兼容 jQuery 1.9 的bug * 【修改】onDrop 的触发规则,保证异步加载模式下,可以在延迟加载结束后触发,避免 onDrop 中被拖拽的节点是已经更新后的数据。 * 【修改】setChkDisabled 方法,增加 inheritParent, inheritChildren 参数设置是否让父子节点继承 disabled * 【修改】异步加载时 拼接参数的方法,由 string 修改为 json 对象 * 【修正】1-2-3 3级节点时,如果 2级节点 全部设置为 nocheck 或 chkDisabled后,勾选3级节点时,1级节点的半勾选状态错误的 bug * 【修改】Demo: checkbox_nocheck.html & checkbox_chkDisabled.html; * 【修改】Demo: edit_super.html,增加 showRenameBtn & showRemoveBtn 的演示 * 【修改】Demo: asyncForAll, 将 post 修改为 get;为了避免由于 IE10 的 bug 造成的客户端 以及 服务端崩溃 IE10 ajax Post 无法提交参数的bug (http://bugs.jquery.com/ticket/12790) *2012.12.21* v3.5.01 * 【优化】clone 方法 * 【修正】对于初始化无 children 属性的父节点进行 reAsyncChildNodes 操作时出错的 bug * 【修正】beforeRename 回调中使用 cancelEditName 方法后,再 return false 导致无法重新进行编辑的 bug * 【修正】exedit 扩展包让 setting.data.key.url 失效的 bug * 【修正】setting.check.autoCheckTrigger 设置为 true 时,onCheck 回调缺少 event 参数的 bug * 【修正】singlepath.html Demo 中的 bug *2012.11.20* v3.5 * 【优化】原先的 clone 方法 (特别感谢:愚人码头) * 【修改】隐藏父节点后,使用 expandAll 方法导致 父节点展开的 bug * 【修改】使用 jQuery v1.7 以上时,设置 zTree 容器 ul 隐藏(visibility: hidden;)后, 调用 selectNode 导致 IE 浏览器报错 Can't move focus 的 bug * 【修改】正在异步加载时,执行 destory 或 init 方法后,异步加载的节点影响新树的 bug * 【修改】方法 reAsyncChildNodes 在 refresh 的时候未清空内部 cache 导致内存泄露 的 bug * 【修改】批量节点拖拽到其他父节点内(inner)时,导致顺序反转 的 bug * 【修改】对于 使用 html格式的 节点无法触发 双击事件 的 bug * 【修改】onCheck 回调中的 event ,保证与触发事件中的 event 一致 * 【修改】异步加载时,在 onNodeCreated 中执行 selectNode 后,导致节点折叠的 bug * 【修改】API 中 dataFilter 的参数名称 childNodes -> responseData * 【修改】API 中 iconSkin 的 举例内容 * 【修改】API 中 chkDisabled 的说明 * 【修改】Demo 中 index.html 内的 loadReady 重复绑定问题 *2012.09.03* v3.4 * 【增加】 Demo —— OutLook 样式的左侧菜单 * 【增加】清空 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 *2012.07.16* v3.3 * 【增加】扩展库 exhide -- 节点隐藏功能 * 【修改】getNodesByFilter 方法,添加 invokeParam 自定义参数 * 【修改】拖拽中测试代码未删除,导致出现黄颜色的 iframe 遮罩层的 bug * 【修改】延迟加载方法 对于使用 expandAll 进行全部展开时,导致 onNodeCreated 回调 和 addDiyDom 方法触发过早的 bug * 【修改】使用 moveNode 移动尚未生成 DOM 的节点时,视图会出现异常的 bug * 【修改】删除节点后,相关节点的 isFirstNode 属性未重置的 bug * 【修改】getPreNode(),getNextNode() 方法在对于特殊情况时计算错误的 bug * 【修改】设置 title 之后,如果重新将 title 内容设置为空后,会导致无法更新 title 的 bug * 【修改】针对 setting.check.chkStyle=="radio" && setting.check.radioType=="all" 的情况时,getTreeCheckedNodes方法优化,找到一个结果就 break * 【修改】zTreeObj.getCheckedNodes(false) 在 radioType = "all" 时计算错误的 bug * 【修改】完善 API 中 beforeDrop / onDrop 的关于 treeId 的说明 *2012.05.13* v3.2 * 【增加】setting.data.key.url 允许修改 treeNode.url 属性 * 【增加】getNodesByFilter(filter, isSingle) 方法 * 【增加】"与其他 DOM 拖拽互动" 的 Demo (http://www.ztree.me/v3/demo.php#_511) * 【增加】"异步加载模式下全部展开" 的 Demo (http://www.ztree.me/v3/demo.php#_512) * 【修改】代码结构,将 addNodes、removeNode、removeChildNodes 方法 和 beforeRemove、onRemove 回调 转移到 core 内 * 【修改】IE7的环境下无子节点的父节点反复展开出现多余空行的 bug * 【修改】异步加载时,如果出现网络异常等,会导致 图标显示错误的 bug * 【修改】dataFilter中 return null 导致异常 的 bug * 【修改】removeChildNodes 方法清空子节点后,无法正常添加节点的 bug * 【修改】moveNode 后节点中的自定义元素的事件丢失的 bug * 【修改】moveNode 方法中设置 isSilent = true 时,如果移动到已展开的 父节点后,出现异常的 bug * 【修改】onClick/onDrag/onDrop 回调中 event 不是原始 event 的 bug * 【修改】onDrop 回调中 当拖拽无效时,无法获得 treeNodes 的 bug * 【修改】onDrop 无法判断拖拽是 移动还是复制的问题 * 【修改】未开启异步加载模式时,拖拽节点到子节点为空的父节点内时 出现异常 的 bug * 【修改】拖拽过程中,反复在 父节点图标上划动时,会出现停顿的 bug (需要css 结构—— button -> span.button) * 【修改】拖拽操作时箭头 与 targetNode 背景之间的细节现实问题,便于用户拖拽时更容易区分 prev、next 和 inner 操作 * 【修改】拖拽操作时IE6/7 下 在 节点 右侧 10px 内会导致 targetNode = root 的 bug * 【修改】编辑模式下 默认的编辑按钮、删除按钮点击后,如果相应的 before 回调 return false 时会触发 onClick 回调的 bug *2012.02.14* v3.1 * 【增加】ajax 的参数 setting.async.contentType ,让提交参数适用于 json 数据提交 (主要适用于 .Net 的开发)。 * 【增加】setting.edit.editNameSelectAll, 用于设定编辑节点名称时初次显示 input 后 text 内容为全选 * 【修改】异步加载 规则,不再仅仅依靠父节点的子节点数来判定,增加内部属性 zAsync,保证默认状态下父节点及时无子节点也只能异步加载一次,除非使用 reAsyncChildNodes 方法强行控制异步加载。 * 【修改】放大浏览器后导致 界面出现多余连接线的bug (需要更新:icon 图标和 css ) * 【修改】在编辑状态,如果节点名超过编辑框宽度,左右键在框内不起作用的bug(IE 6 7 8 出现) CSS 中 filter:alpha(opacity=80) 造成的,应该是 ie 的 bug,需要更新 css 文件 * 【修改】title 设置后,如果属性不存在,则默认为 title 为空,便于数据容错和用户灵活使用 * 【修改】editName 方法如果针对尚未展开的 父节点,会导致该父节点自动展开的 bug * 【修改】title 中存在标签时导致 title 显示异常的bug(例如:蓝色字22%"'``) *2012.01.10* v3.0 * 【增加】setting.check.autoCheckTrigger 默认值 false,可以设置联动选中时是否触发事件回调函数 * 【增加】setting.callback.beforeEditName 回调函数,以保证用户可以捕获点击编辑按钮的事件 * 【增加】treeNode.chkDisabled 属性,显示 checkbox 但是用户无法修改 checkbox 状态,并且该 checkbox 会影响父节点的 checkbox 的半选状态 * 【增加】setting.check.nocheckInherit 属性,用户设置子节点继承 nocheck 属性,用于批量初始化节点,不适用于已经显示的节点 * 【增加】setting.edit.drag.autoExpandTrigger 默认值 false,可以设置自动展开、折叠操作时是否触发事件回调函数 * 【增加】setting.view.nameIsHTML 默认值 false,允许用户对 name 设置 DOM 对象 * 【增加】treeNode.click 属性的说明文档 * 【增加】treeObj.setChkDisabled 方法用于设置 checkbox / radio disabled 状态 * 【增加】treeNode.halfCheck 属性,用于强制设定节点的半选状态 * 【修改】异步加载 & 编辑功能 共存时,拖拽节点 或 增加节点 导致 ie 上报错的 bug (apply 方法引起) * 【修改】zTreeStyle 样式冲突 * 【修改】setting.data.key.title 默认值设置为 "",初始化时自动赋值为 setting.data.key.name 这样可避免希望 title 与 name 一致的用户反复设置参数 * 【修改】点击叶子节点的连接线会触发 expand 事件的 bug * 【修改】IE 下 点击叶子节点连线会出现虚线框的 bug * 【修改】updateNode 导致 checkbox 半选状态错误的 bug * 【修改】checkNode 方法实现 toggle 操作, 取消 expandAll 方法的 toggle 操作 * 【修改】zTree 内鼠标移动会抢页面上 input 内的焦点的 bug * 【修改】beforeRename / onRename 的触发方式——即使名称内容未改变也会触发,便于用户配合 beforeEditName 捕获编辑状态的结束,赋予用户更多调整规则的权利 * 【修改】与 easyUI 共存时无法拖拽的bug * 【修改】beforeRename 在 Firefox 下如果利用 alert,会触发两次的 bug * 【修改】checkNode/expandNode/removeNode 方法,默认不触发回调函数,恢复 v2.6 的默认状态,同时增加 callbackFlag 参数,设置为 true 时,可以触发回调函数 * 【修改】IE9下“根据参数查找节点”的Demo 报错:行14 重新声明常量属性(Demo 自身的问题,定义了history变量) * 【修改】初始化 zTree 时 onNodeCreated 事件回调函数中无法 用 getZTreeObj 获取 zTree 对象的 bug * 【修改】setting.edit.drag.prev / next / inner 参数,增加被拖拽的节点集合 * 【修改】异步加载模式下,otherParam 使用Array数组会出错的 bug。例如: ["id", "1", "name", "test"] * 【修改】FireFox 下多棵树拖拽异常的 bug * 【修改】exedit 中调用 excheck库的方法时没有进行容错处理,导致如果只加入 exedit 而没有 excheck的时候,会出现 js 错误 * 【修改】显示 checkbox 的 zTree 在编辑模式下,移动节点不会更新父节点半选状态的 bug * 【修改】treeNode.childs --> children; treeObject.removeChilds --> removeChildNodes; setting.data.key.childs --> children(英文不好惹的祸!抱歉了!) * 【修改】onRemove 回调中得到的 treeNode 还可以查找 preNode、nextNode 的bug。 修正后,getPreNode 和 getNextNode 都返回 null; 为了便于查找父节点,getParentNode 仍保留 * 【修改】简单数据模式下,如果 id 与 pId 的值相同会导致该节点无法正常加载的 bug * 【修改】移动或删除中间节点会导致最后一个节点连接线图标变小的 bug *2011.09.05* v3.0 beta * 【修改】zTree 的 js 代码架构全面修改,并且拆分 * 【修改】zTree 的 css 样式全面修改,对浏览器可以更好地兼容,同时解决了以前1个像素差的问题 * 【优化】采用延迟加载技术,一次性加载大数据量的节点性能飞速提升 * 【增加】支持多节点同时选中、拖拽 * 【增加】checkNode、checkAllNodes 等多种方法 * 【增加】IE6 自动取消动画展开、折叠的功能 * 【修正】异步加载 & 编辑模式 能够更完美的共存 * 【修正】setting 配置更加合理,并且增加了若干项配置参数 * 【修正】treeNode 节点数据的属性更加合理,并且增加了一些方法 * 【修正】拖拽操作更加灵活方便,更容易制定自己的规则 * 【修正】其他若干修改,详细对比请参考 url:[http://www.ztree.me/v3/faq.php#_101 zTree v3.0 常见问题]