Я не думаю, что это обязательно тот ответ, который вам нужен, но, насколько я могу судить, нет простого способа передать события нижним элементам.Однако, если ваш график похож на пример, вы можете просто изменить порядок невидимых 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/
РЕДАКТИРОВАТЬ: Согласно комментарию ниже, этот подход может быть проблемой для событий масштабирования.Лучший подход, показанный в этой обновленной скрипке , состоит в том, чтобы сделать невидимую Panel
родителем рассматриваемых меток - события будут автоматически всплывать от дочернего к родительскому, и если дочерний элемент не установленслушатель события, он не будет мешать родителю.Так что, пока все метки переднего плана, которые должны получать события, являются дочерними элементами панели панорамирования / масштабирования, это должно работать.