【问题标题】:How to negate class selector in Cytoscape.js?如何否定 Cytoscape.js 中的类选择器?
【发布时间】:2019-01-09 10:49:44
【问题描述】:

我想选择所有没有“myclass”类的元素。如何在 Cytoscape.js 中做到这一点?

根据http://js.cytoscape.org/#selectors/data,“[^name]如果未定义指定的数据属性则匹配元素”,但是类不是数据属性并且^.myclass不起作用,:not(.myclass)也不起作用。

错误是The selector :not(.myclass) is invalid

有没有办法否定类?

【问题讨论】:

  • 标签可能不是必需的,它不会造成伤害,但不了解 cytoscape 的人可能不会知道选择是如何工作的。
  • 您要过滤节点还是边?

标签: class selector cytoscape.js negation


【解决方案1】:

如果你想得到负类选择器,你可以这样做:

cy.elements().not(cy.$('.yourClass'));

// in more detail
var allElements = cy.elements(); // get all elements
var negators = cy.$('.yourClass');  // get all elements with the class to negate
var result = allElements.not(negators); // gets the difference between the two collections

【讨论】:

  • 我希望将它放在选择器中,但如果不可能,我会使用它,谢谢!
  • eles.data('isFoo', true)eles.addClass('foo') 具有相同的相对性能。如果您将类用于真实状态(不仅仅是视觉样式),使用数据字段可能更有意义。
【解决方案2】:

如果你真的想只使用选择器来实现这一点,那么你可以为每个具有myclass 的元素添加一个数据字段(这可以在添加类时完成),然后使用[^myclass]

【讨论】:

  • 似乎无法为一组元素设置属性,由于性能影响,我不想遍历所有元素。
  • eles.data('isFoo', true) 应该为所有元素设置属性。但它也会在某些方面影响性能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
  • 2021-07-11
  • 2011-01-02
相关资源
最近更新 更多