Tôi có một SVG, bên trong có nhiều SVG hơn với một số biến của các phần tử rect bên trong chúng, tất cả được tạo ra từ một đối tượng dữ liệu. Dưới đây là hệ thống phân cấp chung:Tại sao sự kiện mouseenter/mouseleave kích hoạt khi nhập/rời các phần tử con trong SVG?
<svg class="parent-svg">
<svg class="child-svg">
<rect />
<rect />
</svg>
<svg class="child-svg">
<rect />
<rect />
</svg>
</svg>
Tôi đã bị ràng buộc mouseenter/sự kiện MouseLeave đến .child-svg
yếu tố, nhưng tôi thấy rằng các sự kiện được bắn khi con chuột của tôi đi vào khoảng trắng ở giữa <rect>
yếu tố. Sự hiểu biết của tôi về mouseenter/mouseleave là chúng không nên kích hoạt khi con trỏ vào/rời khỏi các phần tử con - điều này có vẻ như hành vi bạn mong đợi từ di chuột qua/mouseout. Và tất nhiên, những gì tôi muốn lý tưởng là dành cho các sự kiện mouseenter/mouseleave chỉ để kích hoạt khi tôi đã rời khỏi mỗi phần (mà tôi đã mô tả bằng cách sử dụng màu sắc).
Đây là fiddle liên quan: http://jsfiddle.net/ysim/yVfuK/4/
Edit: tôi đã cố gắng đưa ra các .child-svg
yếu tố một chiều cao và chiều rộng, nhưng điều đó dường như không làm việc một trong hai: http://jsfiddle.net/ysim/gMXuU/3
Edit: Đây là fiddle với giải pháp, được sửa theo đề xuất của @ pornel: http://jsfiddle.net/ysim/HUHAQ/
Cảm ơn!
trình duyệt là gì bạn sử dụng? Nó dường như có hiệu quả mong muốn đối với tôi. – musicnothing
Đọc về tuyên truyền sự kiện http://stackoverflow.com/questions/4616694/what-is-event-bubbling-and-capturing – Givi
Điều đó thực sự SVG-in-SVG thay vì ''? –
Kornel