2012-07-11 26 views
6

Có một cái nhìn lúc này jsFiddlemouseenter/sự kiện MouseLeave không bắn cho các yếu tố SVG sử dụng jQuery.on

Các mouseenter/mouseleave dường như không được kích hoạt chính xác khi sử dụng jQuery trong conjuction với SVG (Raphael 2.0). Tôi biết trong số các hộp SVG jQuery không phải là 100% tương thích với SVG, tuy nhiên, theo như tôi thấy nó chỉ có vẻ ảnh hưởng đến IE9.

Điều kỳ lạ là nếu bạn nhanh chóng di chuyển chuột của bạn bật/tắt phần tử svg (đảm bảo bạn thoát khỏi ngăn HTML khi làm như vậy) và trở lại vào các sự kiện đó làm cháy (nhưng không phải mọi lần). Chỉ để đảm bảo rằng đó không phải là vấn đề chung với on Tôi đã kết nối sự kiện click hoạt động tốt, mọi lúc.

Chỉ cần tự hỏi liệu có ai biết nếu đây là lỗi hay thậm chí là sự cố đã biết?

+0

hoạt động cho tôi (chrome) –

+0

@StefanFandler - "* theo như tôi thấy nó dường như chỉ ảnh hưởng đến IE9 *". Được gắn thẻ để làm rõ. – James

+0

Tôi tránh sử dụng jQuery kết hợp với SVG như bệnh dịch hạch. Đó là một bãi mìn đầy những trường hợp ngoại lệ như thế này. Tôi nghĩ rằng lỗi của bạn liên quan đến http://forum.jquery.com/topic/1-6-2-broke-svg-hover-events này (chưa được giải quyết từ hai năm trước). – Duopixel

Trả lời

2

Đây là lỗi trong 1.7.2. Xem ticket.

Sự cố sẽ biến mất nếu tôi sử dụng jQuery (cạnh) vì vậy phải được khắc phục trong bản phát hành được lên lịch tiếp theo (1.8).

0

Tôi nghĩ điều quan trọng cần lưu ý là với jQuery 1.8.2 và android qua điện thoại di động không sử dụng jq-mobile. Tôi thấy các sự kiện chạm và chuột được chọn ngẫu nhiên và không được đồng bộ hóa ... có nghĩa là kích hoạt sự khác biệt tinh tế mouseEnter và nhấp vào so với một liên lạc khác kích hoạt touchStart (đôi khi không nhập ngay cả hiện đã được gửi chuộtNhập xảy ra) rồi chạm 2 lần. Nếu bạn có một kích hoạt touchEvent một con chuộtNhập mẫu cảm ứng thứ hai (bắt đầu, kết thúc, kết thúc) sẽ gửi một mouseLeave (giả sử bạn không ngẫu nhiên thông qua sự khác biệt của tap tinh tế kích hoạt một kết hợp nhấp chuột).

Mong đợi của tôi là chúng nên kích hoạt cùng nhau trong cả hai trường hợp ngoại trừ một (sự kiện chạm) được sử dụng nhiều hơn cho nhu cầu đa chạm hoặc nhận ra sẽ không có sự kiện mouseLeave sau sự kiện nhấp được mô phỏng thông qua giao diện cảm ứng (bằng cách nào đó? ...). Kỳ vọng khác của tôi là nếu tôi không xử lý hoặc có người nghe đã đăng ký cho các sự kiện chuột nhưng tôi làm cho các sự kiện liên lạc và ngược lại, các sự kiện khác nhau sẽ không được gửi tùy thuộc vào nội dung được nghe hoặc chặn (trả về false? hoặc để ngăn chặn bubbling thông qua preventDefault vv). Dù sao nó xuất hiện với tôi hiện tại bạn cần xử lý cả hai loại sự kiện theo cách không thể đoán trước ngẫu nhiên, điều này có nghĩa là loại bỏ những gì trong thế giới chuột được mô tả là sự kiện 'vượt' trên thiết bị có khả năng chạm.

Về cơ bản, tôi cho rằng một liên lạc không nên gửi sự kiện quá mức/nhập, trong khi một lần nhấp cũng cần phải chạm vào và nếu tôi nghe để chạm vào ngăn chặnDefault nên hủy mouseEvents được cho biết.

Dù sao đi chăng nữa cũng có ý nghĩa nhất để gửi cả hai và cho phép tôi sắp xếp. Sự nhầm lẫn tôi nghi ngờ là trong đó bạn nghe chỉ một nửa các sự kiện mà nó gửi (thiếu liên lạc). ... rất may mắn! những suy nghĩ đó có thể giúp ai đó đối phó với mớ hỗn độn ở cấp độ cao hơn hoặc cấp thấp hơn. (Đó có phải là cấp trình duyệt để đổ lỗi không? Tôi nghĩ vậy.)

Các vấn đề liên quan