ztree 编辑的节点名称重复怎么办

 我来答
st0402
高粉答主

推荐于2016-02-13 · 关注我不会让你失望
知道大有可为答主
回答量:2.6万
采纳率:91%
帮助的人:1.3亿
展开全部
$.post(
"AddNode.action",
{ type: treelevel, id: pid },
function(nodeIdAndName) {
var params = /([^\|]+)\|([^\|]+)/.exec(nodeIdAndName);
/////////////////////////////////////////////////写法1//////////////////////////////////////////////////////////////////////////////////////////////////
// if ((!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) || treeNode.open){
// treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
// }
// else{
// zTree.expandNode(treeNode, true);
// treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
// }

/////////////////////////////////////////////////写法2//////////////////////////////////////////////////////////////////////////////////////////////////
// if (!((!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) || treeNode.open)) {
// zTree.expandNode(treeNode, true);
// }
// treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });

/////////////////////////////////////////////////写法3//////////////////////////////////////////////////////////////////////////////////////////////////
// if(!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0)
// {
// treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
// }
// else if(treeNode.open)
// {
// if(treeNode.isParent)
// {
// zTree.reAsyncChildNodes(treeNode, "refresh");
// }
// else
// {
// treeNode.isParent=true;
// zTree.reAsyncChildNodes(treeNode, "refresh");
// }
// }
// else
// {
// zTree.expandNode(treeNode, true);
// treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
// }

/////////////////////////////////////////////////写法4//////////////////////////////////////////////////////////////////////////////////////////////////
// if ((!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0)){
// treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
// }
// else if(treeNode.open){
// if(!treeNode.isParent){
// treeNode.isParent=true;
// }
// zTree.reAsyncChildNodes(treeNode, "refresh");
// }
// else{
// zTree.expandNode(treeNode, true);
// treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
// }
});

/*

上面四种写法都是用于zTree异步加载时添加子节点重复的问题
问题描述:
zTree树,第一次给父节点添加子节点时(该节点没有子节点时):如果父节点处于展开状态,只添加一个子节点;如果父节点处于闭合状态,会添加两个节点
问题原因:
之一,zTree v3.0 中,用 addNodes 方法添加节点时,zTree 会自动先去异步加载已有的子节点,然后再添加新的子节点。
所以,当父节点处于闭合状态(还没有子节点)时,用addNodes方法添加子节点节点后会在异步加载子节点的时候再添加一次,就出现两个一样的节点
之二,后来,即使当父节点处于展开状态(还没有子节点)时也会添加两个一模一样的子节点,是因为zTree树的节点在默认情况下都是子节点,这时给它添加
子节点会添加两个,一个是addNodes()添加的,一个是异步加载时添加的。其实这个时候只需要给它一个reAsyncChildNodes 方法强行进行异步加载即可。

其实我自己也还不是特别能理解清楚zTree的逻辑,大家可以看官网API,或者猛击这里 ,还有一个不错的地方就是百度的zTree吧

http://tieba.baidu.com/p/1548730337 这个地址里是百度贴吧 zTreeAPI大神对于我的问题给出的解答,根据他的回答,我又把代码优化了一下,这次代码就很简单而且逻辑也很清楚了
if ((!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) || treeNode.zAsync)
treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
else
zTree.reAsyncChildNodes(treeNode, "refresh");

*/

/*很多时候程序出现问题都是代码的逻辑有问题,知道现在我终于深刻的理解到“逻辑”这个词的含义
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式