Вы можете попробовать следующий пример со страницы jQuery doc . Это симпатичная небольшая интерактивная демонстрация, которая очень наглядна, и вы действительно можете убедиться в этом сами.
var i = 0;
$("div.overout")
.mouseover(function() {
i += 1;
$(this).find("span").text("mouse over x " + i);
})
.mouseout(function() {
$(this).find("span").text("mouse out ");
});
var n = 0;
$("div.enterleave")
.mouseenter(function() {
n += 1;
$(this).find("span").text("mouse enter x " + n);
})
.mouseleave(function() {
$(this).find("span").text("mouse leave");
});
div.out {
width: 40%;
height: 120px;
margin: 0 15px;
background-color: #d6edfc;
float: left;
}
div.in {
width: 60%;
height: 60%;
background-color: #fc0;
margin: 10px auto;
}
p {
line-height: 1em;
margin: 0;
padding: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="out overout">
<span>move your mouse</span>
<div class="in">
</div>
</div>
<div class="out enterleave">
<span>move your mouse</span>
<div class="in">
</div>
</div>
Короче говоря, вы заметите, что при наведении мыши на элемент происходит событие, когда вы находитесь над ним - происходит от его дочернего или родительского элемента, но событие ввода мыши происходит только тогда, когда мышь перемещается из-за пределов этого элемента в этот элемент.
Или , как указано в mouseover()
документах :
[.mouseover()
] может вызвать много головных болей из-за пузырей событий. Например, когда указатель мыши перемещается по элементу Inner в этом примере, ему будет отправлено событие mouseover, а затем накапливается до Outer. Это может вызвать наш связанный обработчик при наведении мыши в неподходящее время. См. Обсуждение для .mouseenter()
для полезной альтернативы.