使用cytoscape.js通过属性范围选择元素

时间:2018-08-07 05:05:07

标签: javascript cytoscape.js

我想用cytoscape.js选择具有一定宽度范围的节点,但无法正常工作。

documentation中,有一个有关选择具有一定重量和高度的节点的示例:

// get all nodes with weight more than 50 and height strictly less than 180
cy.elements("node[weight >= 50][height < 180]");

到目前为止,我已经尝试过:

// 1
cy.elements("node[width < 200]");
// 2
cy.filter("node[width < 200]");
// 3
{
    selector:'node[width < 200]',
    css: {
        // do something
    }
}

但以上方法均无效。那些刚刚返回了一个空的节点集合。当我删除[]中的条件时,它工作正常。我在那里想念什么?

PS:
最终,我希望实现的是所有节点都具有相同的宽度,除非文本太长。现在,我对所有节点都使用自动宽度'width':'label',并尝试将较小的宽度调整为最小宽度。有更好的方法吗?

如果有人可以阐明这一点,我们将非常感谢。

1 个答案:

答案 0 :(得分:0)

我相信您可以通过两种不同的方式来做到这一点:

选项A

cy.nodes().filter("node[width < 200]").filter(["node[height < 180]").style("your css property")

选项B

cy.nodes().filter(function( element, i ){
  return element.data('width' < 200) && element.data('height' < 180)
}).style("your css property");