我不認爲這是你想要的答案,但據我所知,沒有簡單的方法可以將事件傳遞給更低的元素。但是,如果你的圖形類似的例子,你可以簡單地改變無形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
成爲所討論標記的父親 - 事件將自動從子級向上級冒泡,如果子級未爲事件設置偵聽器,則不會干擾父母。所以只要需要接收事件的所有前景標記都是平移/縮放面板的子項,就應該可以工作。
不幸的是,當你像這樣重新排列面板時,這些標記會干擾平移/縮放事件。當光標超過標記時,用戶可以平移/縮放。這在縮小時會成爲一個真正的問題,標記會在光標下滑動,並一直跳到頁面上。 – smith324
呃,好點。 – nrabinowitz
@ smith324 - 請參閱我上面的更新。如果這種方法是可行的,那比我的第一個建議好。 – nrabinowitz