通过zTree自带的节点拖拽功能,如何获取移动节点ID和新的位置的节点ID

通过zTree自带的节点拖拽功能,如何获取移动节点ID和新的位置的节点ID,第1张

代码:

var setting = [{

callback : {

onDrop: onDrop

}

}]

function onDrop(event, treeId, treeNodes, targetNode, moveType){

var id = treeNodes[0]id;//获得被拖拽的节点id

var targetId = targetNodeid;//获得目标id

}

记录项目中关于ztree插件的使用。

实现的功能有:排序、迁移、搜索、删除、右键菜单、重命名、新增。

这里是由于项目需要不同人员的权限不同,右键菜单选项不同;如果你也有这种需求,我觉得这里有两种实现方式,一是像这里写的,点击右键时去后代判断,根据判断结果再去显示;二是在获取树的信息的时候,把判断所需要的必要参数直接放在json里一块返回来,这样前台只需要直接判断就行了。

实现的效果是:输入框内只要有输入变化,就会执行一次搜索方法

火狐有一个bug,就是假如树中含有一个名字为“haha”的节点和名字为“哈哈”的节点,这时你用中文输入法去打“哈”这个字,发现只能输入英文。。扯远了,当然这个可以不做。重点是搜索方法。

其实获取到含有搜索关键字的所有节点很简单,ztree已经封装好了,就是getNodesByParamFuzzy()。

但是,想要的效果是,执行下一次搜索时,要把上一次搜索展开的节点全都关闭,再去展开这种的符合条件的节点。

按道理讲,也很简单,调用expandAll(false)就可以将节点都关闭,然后再去展开符合条件的节点就行了。

但是这样写了以后,发现上次搜索展开的节点并不会全部关闭,而是有的关闭了,有的还是展开的。

在网上搜了很久,在ztree的github项目的issue中找到了一点线索,说展开和关闭都是有动画的。

我想可能是前面的关闭所有节点还没有执行完,与后面的展开节点冲突了。

于是就去api里找,发现有expandSpeed这个参数设置,将动画关闭,这个bug竟然好了。

具体的关于dom的内部原理我不了解。

这里实现的效果是:鼠标移动到某个节点上时,节点后面会出现一个图标,点击图标,实现something

这里主要用到的是autoParam属性,

这个属性的默认值是[],其实可以在后台直接得到节点id

例如java后台可以直接用

String

id

=

requestgetParameter("id");

当然你也可以像下面这样指定传输id

var

setting

=

{

async:

{

enable:

true,

url:

"getNodedo",

autoParam:

["id"]

}

};

另外这个id属性你可以自定义,如

var

setting

=

{

async:

{

enable:

true,

url:

"getNodedo",

autoParam:

["id=zId"]

}

};

后台用

String

id

=

requestgetParameter("zId");就好了

1 获取当前被选中的节点的父节点

var treeObj = $fnzTreegetZTreeObj("tree");

var sNodes = treeObjgetSelectedNodes();

if (sNodeslength > 0) {

var parentNode = sNodes[0]getParentNode();

}

2获取父节点的节点名称

var parentNodeName=parentNodename;

使用zTree插件实现树形图中,需要获取当前点击的父节点的子节点数的需求,使用treeNodechildren获取子节点数据集合,使用length方法获取集合长度。

将当前节点的treeNode传入即可调用。

/查找当前节点下一级的子节点数/

function

findNodes(treeNode)

{

var

count;

/判断是不是父节点,是的话找出子节点个数,加一是为了给新增节点/

if(treeNodeisParent)

{

count

=

treeNodechildrenlength

+

1

;

}

else

{

/如果不是父节点,说明没有子节点,设置为1/

count

=

1;

}

return

count;

}

以上这篇zTree获取当前节点的下一级子节点数实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

ztree异步加载节点的时候需要提供一个url。

ztree初始化完会向这个url发送一次请求注意这个时候是不会带参数的。这个时候你需要返回给它你想要的节点。

ps:我是返回一个根节点给它。

然后在点击此时的节点时候,还是会向这个url发送请求此时会带配置的参数,如果你现在的处理方式和初始化之后那样,就还是返回你开始的那些节点给你。

所以,你需要根据不同的动作来处理你的返回值。

async : {

    enable : true,

    url : _mapurl,//异步路径

    autoParam : ["id","name" ],//请求携带节点上的属性值

    dataFilter : function(treeId, parentNode, childNodes) {

    if (!childNodes)return null;

    for (var i = 0, l = childNodeslength; i < l; i++) {

    var _c=childNodes[i];

    _cisParent=_cparent;

    childNodes[i]name = _cnamereplace(/\n/g, '');

    }

    return childNodes;

    }

      },

//只是提供处理思路 不需要copy

 @RequestMapping("/getOrg")

@ResponseBody

public  List<ObjectTypeBean> getOrg(>

1 获取当前被选中的节点在同级节点中的位置

var treeObj = $fnzTreegetZTreeObj("tree");

var sNodes = treeObjgetSelectedNodes();

if (sNodeslength > 0) {

var node = sNodes[0]getIndex();

}

2 查看当前被选中的节点是否是父节点

var treeObj = $fnzTreegetZTreeObj("tree");

var sNodes = treeObjgetSelectedNodes();

if (sNodeslength > 0) {

var isParent = sNodes[0]isParent;

}

以上就是关于通过zTree自带的节点拖拽功能,如何获取移动节点ID和新的位置的节点ID全部的内容,包括:通过zTree自带的节点拖拽功能,如何获取移动节点ID和新的位置的节点ID、ztree树的使用、zTree异步加载怎样在后台获取节点id问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9690730.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存