İç içe geçmiş öğeler kümem var (SVG). Kök öğesi grafiktir ve çocuklar grafikteki öğelerdir (çizgi, eksen vb.). Basitleştirilmiş örnek:d3.on ("mouseover") olayı iç içe geçmiş SVG öğeleriyle çalışmaz
<g transform="translate(80,10)" id="mainGraph">
<g class="Line">
<path d="....."></path>
</g>
</g>
Sorunum mainGraph elemana (örneğin D3.on ("fare") ile) mouseover/mousemove olay bağlamak eğer ben bir üzerine fareyi hareket, sadece tetikler olmasıdır Çocuk elemanlarının
Okuduğum şeylerden biri, daha sonraki öğelerin önceliği olduğu için, tüm alt öğelere .style ("işaretçi-olaylar", "yok") ekledim, ancak çalışmadı.
something.append('svg:rect')
.attr('width', width) // the whole width of g/svg
.attr('height', height) // the whole heigh of g/svg
.attr('fill', 'none')
.attr('pointer-events', 'all')
.on('mouseover', function() {
// do something
}
});
I (sizin örnekte mainGraph)
<g>
eleman inanıyoruz:
için css özelliğini eklemektir. –
A 'g' elemanı (div’in tersi) yalnızca şekilsiz bir kapsayıcıdır ve dolayısıyla boyutları yoktur. Dolayısıyla, fareyi dikdörtgen bir alana uygulamak istiyorsanız, bu “rect” gibi dikdörtgen içerikler belirtmeniz gerekir. Ancak, kullanışlı bir iyileştirme dolgu kullanıyor: none ve pointer-events: all styles. – mbostock
@mbostock İşaretçi-olayları doğrudan eleman üzerinde kullanıp CSS özelliklerine göre ayarlayarak fark yaratır mı? '' '' '' '' '' '' '' '' '' '' '' '' '' Elemanında aynı şekilde davranır mı? – amenadiel