İçinde hepsi bir veri nesnesinden oluşturulan değişken sayıda rect öğesi bulunan daha fazla SVG olan bir SVG var. İşte genel hiyerarşisi şöyledir:Bir SVG'de alt öğelere giriş/çıkış yaparken mouseenter/mouseleave olayları neden tetiklenir?
<svg class="parent-svg">
<svg class="child-svg">
<rect />
<rect />
</svg>
<svg class="child-svg">
<rect />
<rect />
</svg>
</svg>
Ben .child-svg
elemanlarına MouseEnter/mouseLeave olayları bağlı ettik ama benim fare <rect>
elemanları arasına boşluk gittiğinde olaylar ateş olduğunu buluyorum. Mouseenter/mouseleave hakkındaki anlayışım, imleç çocuk öğelerine girdiğinde/çıkarken ateş etmemeleridir - bu, mouseover/mouseout'tan bekleyeceğiniz davranışa benziyor. Ve elbette, en sevdiğim şey, fare bölümleri/mouseleave olayları için her bölümü bıraktığım zaman (sadece renkleri kullanarak çizdiğim) ateş etmektir.
İşte alakalı keman var: http://jsfiddle.net/ysim/yVfuK/4/
Düzenleme: Ben .child-svg
elemanlarını bir yüksekliğe ve genişliğe vererek çalıştı, ancak bu da işe görünmüyordu: http://jsfiddle.net/ysim/gMXuU/3
Düzenleme: İşte var @ pornel'in önerisine göre düzeltildi, çözüm ile keman: http://jsfiddle.net/ysim/HUHAQ/
Teşekkürler!
Hangi tarayıcıyı sen fare işaretçisi görünmez eleman "görünür" hale getirmek için
pointer-events:all
eklemek arka<rect>
ekleyin:İşte çözüm kullanarak? Benim için istenen etkiye sahip gibi görünüyor. – musicnothing
Etkinlik yayılımı hakkında bilgi edinin http://stackoverflow.com/questions/4616694/what-is-event-bubbling-and-capturing – Givi
Bu, gerçekten "" yerine SVG-in-SVG mi? –
Kornel