ztree 编辑的节点名称重复怎么办
1个回答
展开全部
$.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");
*/
/*很多时候程序出现问题都是代码的逻辑有问题,知道现在我终于深刻的理解到“逻辑”这个词的含义
"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");
*/
/*很多时候程序出现问题都是代码的逻辑有问题,知道现在我终于深刻的理解到“逻辑”这个词的含义
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询