Я заметил проблему, когда тестировал событие mouseover
. В приведенном ниже примере есть изображение, когда вы его наводите, оно становится больше, когда мышь отсутствует, он возвращается к нормальному размеру, но когда вы нажимаете на него много раз быстрее, он становится все больше и меньше несколько раз, как если бы он запомнил каждый прогон мыши и продолжал играть в анимацию снова и снова.
Вот живой пример: Здесь Продолжайте быстро перемещать мышь и вынимать изображение, а затем отвести мышь, и вы увидите.
Позвольте мне представить вам CSS3, что делает jQuery устаревшим: Demo
HTML:
<img src="......./Smiley.png" alt="smile" id="imgSmile" />
CSS:
#imgSmile {
width:200px;
transition:width 0.4s ease;
}
#imgSmile:hover {
width:250px;
}
JS: НЕТ!
Вы можете добавить класс во время анимации и удалить его после завершения анимации и применить только новую анимацию, если класс не применяется к элементу. Пример:
$(document).ready(function(){
$('#imgSmile').width(200);
$('#imgSmile').mouseover(function()
{
if(!$(this).hasClass('animating')){
$(this).css("cursor","pointer");
$(this).addClass('animating');
$(this).animate({width: "250px"}, 'slow',function(){
$(this).removeClass('animating');
});
}
});
$('#imgSmile').mouseout(function()
{
$(this).animate({width: "200px"}, 'slow');
});
});