美文网首页
visjs--network展开和折叠节点(性能低的版本)--仅

visjs--network展开和折叠节点(性能低的版本)--仅

作者: sanguing | 来源:发表于2017-10-16 10:30 被阅读0次

这篇记录是对第一篇“visjs--network展开和折叠节点的思路”的第一个实现版本,“也是参考了网上的一vis文章修改后的,非常感谢该作者提供的思路,因为网上各种转载,不知道原版作者是谁,如果作者看到请留言,我会将原贴地址发出来,谢谢!”,但是展开和折叠节点的在多于200个节点后,会出现明显的延迟,所以才有了第二个优化的版本,这里仅仅只是放出来给自己做个案例参考,如果有幸被看到,需要该demo的,可以留下邮箱,这里篇幅原因,不放出全部demo,仅仅也只是片段。

展开和收缩下级所有节点
    function remove_sub_nodes(node_id, obj) {
        var sub_nodes = get_directly_sub_nodes(node_id, obj);
        if (sub_nodes.length == 0) {
            if (typeof (obj.subids) != 'undefined') {
                $.each(obj.subids, function (index, item) {
                    nodes.add(newNodeArr[item]);
                    edges.add({id: node_id + '_' + item, from: node_id, to: item});
                    remove_all_sub_nodes(item, newNodeArr[item]);

                    network.moveNode(item,nodes._data[item].x,nodes._data[item].y);
                });
            } else {
                //alert('当前为叶子节点');
            }
        } else {
            $.each(sub_nodes, function (index, item) {
                var sub_sub_nodes = get_directly_sub_nodes(item, newNodeArr[item]);
                if (sub_sub_nodes.length == 0) {
                    nodes.remove({id: item});
                    edges.remove({id: node_id + '_' + item});
                } else {
                    remove_all_sub_nodes(item, newNodeArr[item])
                }
                nodes.remove({id: item});
                edges.remove({id: node_id + '_' + item});
            });
        }
    }
获取子节点的信息
function get_directly_sub_nodes(node_id, obj) {
        var return_nodes = [];
        var connectedNodes = network.getConnectedNodes(node_id);//获取所有连接节点
        $.each(connectedNodes, function (index, item) {
            if (item != obj.pid) {//当前节点的父节点 ,不操作
                return_nodes.push(item);
            }
        });
        return return_nodes;
  }
简单说明
1. remove_sub_nodes(node_id, obj):
node_id:表示点击的节点的id值
obj:表示点击的节点对象
2. get_directly_sub_nodes(node_id, obj):
node_id:表示点击的节点的id值
obj:表示点击的节点对象

以上两个函数思路就是,点击节点,判断节点下是否存在子节点,然后将子节点循环添加或者删除达到展开和折叠的效果。

相关文章

  • visjs--network展开和折叠节点(性能低的版本)--仅

    这篇记录是对第一篇“visjs--network展开和折叠节点的思路”的第一个实现版本,“也是参考了网上的一vis...

  • visjs--network展开和折叠节点的思路

    使用vis不久也只有几天,简单做个记录吧,直接进主题。 需求描述 demo案例--展开于折叠节点 因为实际的dem...

  • jQuery 树插件-zTree 全选 反选 折叠和展开,实现联

    1:点击全选可选中或取消选中全部节点,全部展开可展开或折叠所有节点 2:单个节点的选中或折叠等操作会影响全选和展开...

  • visjs--network拖动节点

    承接第一篇文章的展开和折叠节点,现在说说移动主节点,子节点需要同时跟随保持原来的位置一起移动。 demo案列 de...

  • 折叠展开

    早上阅读了最近很火的《北京折叠》,文章不长,很快读完,中间有很多的描写还是跳过的,因为不是精读,因此很多细节并不清...

  • spacemacs常用操作

    折叠 zc 折叠当前块(函数)zm 折叠当前文件的所有函数zo 展开当前折叠zr 展开当前文件的所有折叠 函数跳转...

  • Flutter代码的一些快捷键

    折叠部分代码: ⌘ + -展开部分代码: ⌘ + +折叠全部代码: ⌘ + ⇧ + -展开全部代码: ⌘ + ⇧ ...

  • TableView的cell折叠和展开

    基本原理就是利用section的和row的关系,当点击section的头部view时候,就刷新下列表,展开当前se...

  • VS 快捷键 整理

    1,VS 代码编辑器的展开和折叠代码确实很方便和实用。 以下是展开代码和折叠代码所用到的快捷键,很常用: Ctrl...

  • VIM使用技巧

    ★在vim的命令模式 按Shift+F5,可进入帮助文档。 ★展开折叠 展开、折叠所有代码 z + i 折叠代码 ...

网友评论

      本文标题:visjs--network展开和折叠节点(性能低的版本)--仅

      本文链接:https://www.haomeiwen.com/subject/fpqkuxtx.html