Mouseenter/mouseleave застревает
Привет
Вот моя структура:
<родительский элемент>
- - <дочерний элемент>
- - - - <дочернее наложение>
- - - - <другие вещи>
- - <дочерний элемент>
- - - - <дочернее наложение>
- - - - <другие вещи>
Как это должно работать:
Изображение 1[^]
Проблема если я быстро наведу курсор мыши на несколько дочерних элементов:
Изображение 2[^]
Если я быстро наведу курсор мыши на несколько дочерних элементов, они останутся так, как будто мышь парит, хотя они должны делать это только в том случае, если мышь находится на элементе, и вернутся в свое нормальное состояние, когда мышь покинет дочерний элемент.
Когда "содержимое" наведении курсора, на 'наложения' становится 'дисплей: блок'. Вот почему mouseleave предназначен для наложения вместо этого.
JS:
$(document).on("mouseover", ".service_message_content", function(e) { e.stopPropagation(); var parentID = "#" + $(this).parent().prop("id"); var cls = $(parentID + " > .service_message_bar").attr("class").split(" ")[1]; var c = cls.substring(20); switch(c) { case "red": c = "25,12,12"; break; case "orange": c = "25,17,0"; break; case "green": c = "12,25,12"; break; case "blue": c = "15,15,25"; break; case "light_blue": c = "0,22,25"; break; } $(parentID + " > .service_message_overlay").css({"display": "grid", "background": "rgba(" + c + ", 0.8)"}); $(parentID + " > .service_message_overlay").stop().animate({"opacity": "1"}, 500); $(parentID + " > .service_message_triangle").stop().animate({"border-right-color": "rgba(" + c + ", 1)"}, 500); }); $(document).on("mouseleave", ".service_message_overlay", function() { for(var i = 0; i < window.messages.length; i++) { var parentID = "#message" + i; $(parentID + " > .service_message_overlay").stop().animate({"opacity": "0"}, 500, function() { $(this).css("display", "none"); }); $(parentID + " > .service_message_triangle").stop().animate({"border-right-color": "rgb(43,43,43)"}, 500); } });
Что я уже пробовал:
Mouseenter, Mousemove, Mouseleave, Mouseout