Следите за изменениями размера
Я не вижу ничего плохого в том, что вы используете hover()
или ваши функции обратного вызова. Я возился с твоим примером; основное странное поведение, которое я видел, было, если дочерний элемент скрыт, и это приводит к тому, что родитель становится настолько маленьким, что выходит из-под мыши.
Другими словами, jQuery следит за тем, чтобы навести курсор на элемент. Если этот элемент растет и уменьшается, он может измениться, если вы по-прежнему находитесь над ним, вызывая зависание, затем зависание и т. Д. Без движения мыши. Поэтому убедитесь, что у вас есть некоторый другой контент в родительском элементе и / или он имеет некоторый размер, заданный ему CSS.
Проверьте вашу разметку
Я бы также согласился с первым комментарием: вам не следует использовать пользовательские элементы, если вы можете избежать этого. Я дал родительскому элементу границу, чтобы я мог видеть, насколько он большой, но стиль не отображался, пока я не сделал его div с идентификатором вместо пользовательского типа элемента.
Если это вообще возможно, используйте идентификаторы и классы для идентификации стандартных элементов вместо использования пользовательских. Чем необычнее ваша разметка, тем более неопределенными будут проблемы - «Это проблема с моим JS или браузер задыхается от моего пользовательского HTML?»