我有一个Protovis图表,响应平移/缩放事件,例如website上的示例,其中包含保存图表为空的Panel
。不幸的是,它会捕获我的基础图通常会响应的所有Events
mouseover
和mouseout
。
这是因为您必须将Panel设置为接受所有事件。根据{{3}},唯一有效的参数是'全部','画'和'无'
vis.add(pv.Panel) .events( “ALL”)
如何阻止缩放Panel
捕获这些事件?或者我如何将它们传递到它下面的Panel
?
答案 0 :(得分:0)
我认为这不一定是你想要的答案,但据我所知,没有简单的方法将事件传递给较低的元素。但是,如果您的图表与示例相似,则只需更改不可见Panel
的顺序以及应接收事件的标记:
vis.add(pv.Dot)
.event('click', function() { alert("clicked") })
// ... etc
vis.add(pv.Panel)
.events("all")
// ... etc
为:
vis.add(pv.Panel)
.events("all")
// ... etc
vis.add(pv.Dot)
.event('click', function() { alert("clicked") })
// ... etc
这将更改标记的z顺序,以便点在面板之前接收单击事件。它不是即插即用,因为您必须将面板插入现有图形中的正确位置,但它应该可以工作。
您可以在此处根据示例查看jsFiddle:http://jsfiddle.net/nrabinowitz/Ctxrr/
编辑:根据以下评论,此方法可能是缩放事件的问题。 this updated fiddle中显示的更好的方法是使隐形Panel
成为所讨论标记的父级 - 事件将自动从子级映射到父级,如果子级未设置监听器对于一个事件,它不会干扰父母。因此,只要需要接收事件的所有前景标记都是平移/缩放面板的子级,这应该可以。