zTree是通过jQuery实现的多功能“树插件”。 在本文中,您将通过共享jQuery zTree异步加载来添加子节点重复问题。 有需要的朋友请参考
zTree介绍
zTree是通过jQuery实现的多功能“树插件”。 卓越的性能、灵活的配置和多种功能相结合是zTree的最大优势。
zTree是开源免费软件(MIT许可证)。 如果你对zTree感兴趣,或者你想为zTree的持续发展提供资金,你可以提供资金。 zTree v3.0按功能划分了核心代码,这样就可以不加载不需要的代码
采用延迟加载技术,可以轻松加载上万个节点,IE6也几乎可以秒杀
与IE、FireFox、Chrome、Opera、Safari等浏览器的兼容性
JSON数据支持
支持静态和Ajax数据异步加载
支持任意更换外观/自定义图标(取决于css ) ) ) ) ) ) ) ) ) )。
支持极其灵活的checkbox或radio选择功能
提供多个事件响应回调
的灵活编辑(添加/删除/修改/搜索)功能,可以自由拖动节点,也可以在多节点中拖动
可以在一个页面中同时生成多个Tree实例
通过简单的参数构成实现灵活多样的功能
添加原始问题//节点、产品和版本
functionaddnode{
rmenu.CSS (可见性' : '隐藏' );
var treenode=ztree.getselectednodes ([0];
var pid;
var nodeName;
var treelevel;
if (! treenode event.target.tagname.to lower case!='button'$(event.target ).parents ) ) a ).length==0) {
//添加产品节点
pid=0;
treeNode=null;
三级=1;
} else if (趋势科技) {
//添加版本节点
pid=treeNode.id;
三级=2;
}
$.post (
' AddNode.action ',
{ type: treelevel,id: pid },
功能(nodeidandname ) {
varparams=/([^|] )|) [^|] )/.exec ) nodeidandname );
if (! () )! treenode event.target.tagname.to lower case!='button'$(event.target ).parents ) (a ).length==0)|| treeNode.open ) ) )。
zree.expandnode(treenode,true );
}
treenode=ztree.add nodes (treenode,{ id: params[1],pid: pid,isParent: 'true ',name: params[2]
);
}
如果原始直接添加子节点,并且父节点未展开,则会添加两个相同的子节点(第一次时)。 然后确定是否展开父节点,但展开父节点时,将添加两个相同的子节点。 如果是第一次,这个问题怎么解决呢?
方法1
if (! () )! treenode event.target.tagname.to lower case!='button'$(event.target ).parents ) (a ).length==0)|| treeNode.open ) ) )。
zree.expandnode(treenode,true );
}
treenode=ztree.add nodes (treenode,{ id: params[1],pid: pid,isParent: 'true ',name: params[2]
if (变更为! treenode event.target.tagname.to lower case!='button'$(event.target ).parents ) (a ).length==0) () ) ) ) 652 )
{
treenode=ztree.add nodes (treenode,{ id: params[1],pid: pid,isParent: 'true ',name: params[2]
}
elseif(treenode.open ) ) )。
{
if(treenode.isparent ) ) )。
{
ztree.reasyncchildnodes (treenode,' refresh ';
}
else
{
treeNode.isParent=true;
ztree.reasyncchildnodes (treenode,' refresh ';
}
}
else
{
zree.expandnode(treenode,true );
treenode=ztree.add nodes (treenode,{ id: params[1],pid: pid,isParent: 'true ',name: params[2]
}
问题可以解决,但是已经优化了吗? 我觉得更改的代码分类太多了
最好的方法
好像不用那么麻烦吧? 前些天,我回答了类似的问题。
1、点击添加子节点,直接将数据保存到ajax中,捕获success事件
2、对于ajax success,使用treeNode.zAsync属性可以知道此父节点是否进行了异步加载。 如果为false,则直接刷新reAsyncChildNodes;如果为true,则直接刷新addn . if (treenode event.target.tagname.to lower case!='button'$(event.target ).parents ) (' a ).length==0)|| treeNode.zAsync ) () ) ) ) )。
treenode=ztree.add nodes (treenode,{ id: params[1],pid: pid,isParent: 'true ',name: params[2]
else
ztree.reasyncchildnodes (treenode,' refresh ';
上面是我给大家整理的,希望以后对大家有帮助。
相关文章: