Mam zagnieżdżony zestaw elementów (SVG). Elementem podstawowym jest wykres, a elementy potomne są elementami wykresu (linie, oś itd.). Uproszczony przykład:Zdarzenie d3.on ("mouseover") nie działa z zagnieżdżonymi elementami SVG
<g transform="translate(80,10)" id="mainGraph">
<g class="Line">
<path d="....."></path>
</g>
</g>
Moim problemem jest to, że jeśli wiążę się mouseover/mouseMove zdarzenie (z D3.on („mouseover”), na przykład) do elementu mainGraph, tylko wyzwala, jeśli przesunąć kursor nad jedną elementów potomnych.
Jedną z rzeczy, które czytam, jest to, że pierwszeństwo mają elementy późniejsze, dlatego dodałem style .style ("wskaźnik-zdarzenia", "brak") do wszystkich elementów potomnych, ale to nie zadziałało.
Używanie 'G' powinno działać, jeśli ustawisz swoje wymiary wyraźnie. –
Element 'g' (w przeciwieństwie do' div') jest po prostu bezkształtnym kontenerem, a więc nie ma wymiarów. Jeśli chcesz, aby kursor myszy nadawał się do prostokątnego obszaru, musisz określić prostokątną treść, taką jak "rect". Jednak jednym z przydatnych udoskonaleń jest użycie wypełnienia: none i pointer-events: all styles. – mbostock
@mbostock robi to żadnej różnicy, jeśli za pomocą wskaźników zdarzenia bezpośrednio na elemencie vs ustawienie go w jego właściwości CSS? Czy element '' 'path''' wewnątrz' '' g''' zachowuje się w taki sam sposób? – amenadiel