是否有可能找出 class 边源 and/or 目标有什么?

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

我给了一些节点 class "hidden" 和一些 class "visible".

我正在使用

d3.selectAll(".link")

到 select 所有 link 在我的力导向图中。这些 link 具有源和目标,全部 link 编辑在 JSON 文件中。

我想遍历这些 links 并检查 links 源节点 class(和目标)并查看是否有任何 classes = visible/hidden。

如果源和目标都是 "visible" 那么 link 将有一个 "visible" class 否则有一个 "hidden" class .

如何查看 link 的源和目标 class 是什么?

这是我试过的方法,但我不知道要在 '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;
  });

我在开始时将可见 class 应用于所有节点:

var nodes = inner.selectAll(".node").append("g")
    .data(network.network.data.nodes)

nodes.classed("visible", true);

这里是我 show/hide 节点的地方,取决于它们是否 selected 与否

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";
    });