Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: event, dom

В чем разница между событиями mouseleave и mouseout в JavaScript?

Этот вопрос проверяет знание различий между похожими событиями mouseleave и mouseout, которые часто используются для работы с курсором мыши на веб-странице.

Короткий ответ

Событие mouseleave срабатывает, когда курсор мыши уходит за пределы элемента, включая все его дочерние элементы. Событие mouseout, в свою очередь, срабатывает, когда курсор покидает элемент или его дочерний элемент. Таким образом, mouseout может сработать несколько раз внутри одного элемента при переходе между дочерними элементами.

Длинный ответ

События mouseleave и mouseout в JavaScript связаны с движением курсора мыши, но имеют разные триггеры.

mouseleave:
Это событие срабатывает, когда курсор уходит за пределы элемента и всех его дочерних элементов. Оно не срабатывает, если курсор перемещается между дочерними элементами:

element.addEventListener('mouseleave', () => {
	console.log('Курсор покинул элемент'); 
});

mouseout:
Это событие срабатывает, когда курсор покидает элемент или любой из его дочерних элементов. Поэтому, если курсор перемещается между дочерними элементами, mouseout будет срабатывать каждый раз:

element.addEventListener('mouseout', () => {
	console.log('Курсор покинул элемент или его дочерний элемент'); 
});

Пример различия:

<div id="parent" style="width:200px; height:200px; background-color:lightblue;">
	<div id="child" style="width:100px; height:100px; background-color:lightgreen;"></div> 
</div> 
<script>
	const parent = document.getElementById('parent');  
	parent.addEventListener('mouseleave', () => console.log('mouseleave на родителе'));  
	parent.addEventListener('mouseout', () => console.log('mouseout на родителе'));  
	const child = document.getElementById('child');  
	child.addEventListener('mouseout', () => console.log('mouseout на дочернем элементе')); 
</script>

В этом примере, если курсор переместится с родительского элемента на дочерний, mouseout на родителе и дочернем элементе сработает, но mouseleave не сработает до тех пор, пока курсор не покинет родительский элемент полностью.

Итог:

  • mouseleave удобен, когда нужно отследить полное покидание элемента, включая его дочерние элементы.

  • mouseout срабатывает при каждом выходе курсора из элемента или его дочерних элементов, что делает его полезным для отслеживания каждого движения между элементами внутри структуры.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    1

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#event

#dom

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию