1

我有一个有两个孩子(和多个孙子)的父节点。如何只选择给定节点的子节点(而不是节点本身)?

其他函数 edgesWith 和 edgesTo 将两个集合链接在一起,我只想要一个节点的子节点。

我试过这个不成功

$('#cy').cytoscape({
  style: cytoscape.stylesheet()
    .selector('node')
      .css({
        'content': 'data(name)',
        'text-valign': 'center',
        'color': 'white',
        'text-outline-width': 2,
        'text-outline-color': '#888'
      })
    .selector('edge')
      .css({
        'target-arrow-shape': 'triangle'
      })
    .selector(':selected')
      .css({
        'background-color': 'black',
        'line-color': 'black',
        'target-arrow-color': 'black',
        'source-arrow-color': 'black'
      })
    .selector('.faded')
      .css({
        'opacity': 0.25,
        'text-opacity': 0
      }),

  elements: {
    nodes: [
      { data: { id: 'j', name: 'Jerry' } },
      { data: { id: 'e', name: 'Elaine' } },
      { data: { id: 'k', name: 'Kramer' } },
      { data: { id: 'g', name: 'George' } }
    ],
    edges: [
      { data: { source: 'j', target: 'e' } },
      { data: { source: 'j', target: 'k' } },
      { data: { source: 'j', target: 'g' } }
    ]
  },

  ready: function(){
    window.cy = this;

    // Elaine, Kramer, George should be blue!
    cy.elements('node[id="j"] node').css({'background-color': 'blue'});
  }
});
4

2 回答 2

2

将您的准备功能更改为以下内容:

ready: function() {
  window.cy = this;

  var edgesFromJerry = cy.elements('edge[source="j"]');
  var jerryChildren = edgesFromJerry.target();
  jerryChildren.css('background-color', 'blue');
}
于 2013-10-09T03:20:50.303 回答
0

与选择所有孩子而不是一个孩子的 Matthew Burke 的回答略有不同。

   ready: function() {
      window.cy = this;

      var edgesFromJerry = cy.edges('edge[source="j"]');
      var jerryChildren = edgesFromJerry.targets();
      jerryChildren.css('background-color', 'blue');
    }

发布作为答案而不是评论作为评论中的答案往往很难找到

于 2016-08-29T19:34:30.430 回答