是否可以找出边源和/或目标具有的类

Is it possible to find out what class an edges source and/or target has?

本文关键字:目标 是否      更新时间:2023-09-26

我给一些节点一个"隐藏"的类,给一些节点一个"可见"的类。

我正在使用

d3.selectAll(".link")

以选择"我的力定向图"中的所有链接。这些链接同时具有源和目标,它们都链接在一个 JSON 文件中。

我想浏览这些链接并检查链接源节点类(和目标),看看是否有任何类 = 可见/隐藏。

如果源和目标都是"可见的",那么链接将有一个"可见"类,否则有一个"隐藏"类。

如何查看链接源类和目标类是什么?

这是我尝试过的,但我不知道在主要的"if"语句中放什么。

  d3.selectAll(".link.visible").attr("class", function(d) {
        var c = "link";
        if (d.source.visible && d.target.visible) //here this doesnt work, I need to
        //find out if source and target of the selected link are visible
        { 
            clog("VISIBLE");
            c += " visible";
        } else {
            clog("HIDDEN");
            c += " hidden";
        }
        return c;
  });

我在开始时将可见类应用于所有节点的地方:

var nodes = inner.selectAll(".node").append("g")
    .data(network.network.data.nodes)
nodes.classed("visible", true);

这是我显示/隐藏节点的地方,具体取决于它们是否被选中

nodes.classed("hidden", function (d)
    {
        //if()
        return d.selected ? false : true;
    });
    nodes.classed("visible", function (d)
    {
        return d.selected ? true : false;
    });

由于sourcetarget数据节点都有一个属性selected来确定关联 DOM 节点的可见性,因此只需使用该属性而不是查找 CSS 类。

d3.selectAll(".link")
    .attr("class", function(d) {
        return d.source.selected && d.target.selected ? "visible" : "hidden";
    });