如何完全禁用元素事件?

问题描述 投票:0回答:1

我正在使用复合模型和cytoscape-compound拖放扩展,以便用户通过将一些节点分组在一起并轻松移动整个组来手动重新组织布局。

现在,我需要一个按钮来切换这些组“框”的显示,但是继续显示所有非父节点。我首先在父节点上尝试了hide(),但同时也隐藏了子节点,因此我切换到动态应用指定display:hidden的类。似乎可以解决问题,但是仍然可以单击隐藏框,并应用cytoscape默认的“视觉反馈”进行单击,以显示隐藏框仍位于的区域。

我尝试了很多无效的事情:-disable events from my hidden style class: tried events:no我应该将其报告为错误吗?-.ungrabify()。unselectify()。panify()。lock()-单击:销毁事件对象-设置e.target._private.active = false

[我尝试过讨厌的黑客:设置e.target._private.position = {}事件仍然被触发,但是破坏了位置[[成功地阻止了“视觉反馈”的发生,我的盒子实际上保持为“隐藏”状态。但是事件仍然发生在错误的目标上:盒子上,而不是在cytoscape容器的空白处。我可以继续黑客攻击,然后再使用它,但是没有更简单的解决方案吗?

是否有可能简单真实地传递隐藏的父节点事件?

javascript cytoscape.js
1个回答
1
投票
您没有正确使用events

cy.$('node').forEach(node => { node.events = 'no'; // will not work });

以下内容确实有效,您还可以随时还原事件。

cy.$('node').forEach(node => { node.style('events', 'no'); });

© www.soinside.com 2019 - 2024. All rights reserved.