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

这篇记录是对第一篇“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展开和折叠节点(性能低的版本)--仅仅作为版本记录)