Как проигрывать анимацию, только когда курсор находится на блоке?

Реализовал функцию, которая, при наведении мыши на блок, затемняет его слева направо, а в центре отображается картинка, проблема в том, что если быстро наводить курсор на блок, то анимация либо багует, либо отображается один раз.

Можно ли сделать так, что бы анимация проигрывалась только в момент, когда курсор находится на блоке?

Т.е если, например, мы убираем мышь до того, как полностью выполнится mouseenter, то выполняется анимация для mouseleave.

$(function() {
  $('.about_blocks__block1').mouseenter(function() {
    if (!$(".about_blocks__block1").children('.about_blocks__block__blackout1').length > 0 && !$('.about_blocks__block__blackout1').children('.about_blocks__block__img1').length > 0) {
      $(this).append('<div class="about_blocks__block__blackout1"></div>');
      $('.about_blocks__block__blackout1').animate({
        width: 240
      }, 500);
      $('.about_blocks__block__blackout1').append('<div class="about_blocks__block__img1"></div>');
      $('.about_blocks__block__img1').show(1000);
    }
  });
  $('.about_blocks__block1').mouseleave(function() {
    if ($(".about_blocks__block1").children('.about_blocks__block__blackout1').length > 0 && $('.about_blocks__block__blackout1').children('.about_blocks__block__img1').length > 0) {
      $('.about_blocks__block__img1').animate({
        opacity: 0
      }, 300);
      $('.about_blocks__block__blackout1').animate({
        width: 0
      }, 1000);
      setTimeout(function() {
        $('div.about_blocks__block__img1, div.about_blocks__block__blackout1').remove();

      }, 1002);
    }
  });
  $('.about_blocks__block2').mouseenter(function() {
    if (!$(".about_blocks__block2").children('.about_blocks__block__blackout2').length > 0 && !$('.about_blocks__block__blackout2').children('.about_blocks__block__img2').length > 0) {
      $(this).append('<div class="about_blocks__block__blackout2"></div>');
      $('.about_blocks__block__blackout2').animate({
        width: 240
      }, 500);
      $('.about_blocks__block__blackout2').append('<div class="about_blocks__block__img2"></div>');
      $('.about_blocks__block__img2').show(1000);
    }
  });

  $('.about_blocks__block2').mouseleave(function() {
    if ($(".about_blocks__block2").children('.about_blocks__block__blackout2').length > 0 && $('.about_blocks__block__blackout2').children('.about_blocks__block__img2').length > 0) {
      $('.about_blocks__block__img2').animate({
        opacity: 0
      }, 300);
      $('.about_blocks__block__blackout2').animate({
        width: 0
      }, 1000);
      setTimeout(function() {
        $('div.about_blocks__block__img2, div.about_blocks__block__blackout2').remove();
      }, 1002);
    }
  });
  $('.about_blocks__block3').mouseenter(function() {
    if (!$(".about_blocks__block3").children('.about_blocks__block__blackout3').length > 0 && !$('.about_blocks__block__blackout3').children('.about_blocks__block__img3').length > 0) {
      $(this).append('<div class="about_blocks__block__blackout3"></div>');
      $('.about_blocks__block__blackout3').animate({
        width: 240
      }, 500);
      $('.about_blocks__block__blackout3').append('<div class="about_blocks__block__img3"></div>');
      $('.about_blocks__block__img3').show(1000);
    }
  });
  $('.about_blocks__block3').mouseleave(function() {
    if ($(".about_blocks__block3").children('.about_blocks__block__blackout3').length > 0 && $('.about_blocks__block__blackout3').children('.about_blocks__block__img3').length > 0) {
      $('.about_blocks__block__img3').animate({
        opacity: 0
      }, 300);
      $('.about_blocks__block__blackout3').animate({
        width: 0
      }, 1000);
      setTimeout(function() {
        $('div.about_blocks__block__img3, div.about_blocks__block__blackout3').remove();
      }, 1002);
    }
  });
});
.about_blocks {
  display: -webkit-flex;
  display: -moz-flex;
  display: -ms-flex;
  display: -o-flex;
  display: flex;
  margin: 130px 0 165px 480px;
}

.about_blocks__block1,
.about_blocks__block2 {
  margin-right: 120px;
}

.about_blocks__block1,
.about_blocks__block3,
.about_blocks__block2 {
  width: 240px;
  height: 240px;
  border-radius: 5px;
}

.about_blocks__block1 {
  background: red;
}

.about_blocks__block2 {
  background: red;
}

.about_blocks__block3 {
  background: red;
}

.about_blocks__block1,
.about_blocks__block3,
.about_blocks__block2:hover {
  cursor: pointer;
}

.about_blocks__block__img1,
.about_blocks__block__img2,
.about_blocks__block__img3 {
  background: white;
  background-repeat: no-repeat;
  width: 77px;
  height: 50px;
  margin-left: 80px;
  margin-top: 95px;
}

.about_blocks__block__blackout1,
.about_blocks__block__blackout2,
.about_blocks__block__blackout3 {
  background: rgba(0, 0, 0, 0.5);
  height: 240px;
  border-radius: 5px;
  display: inline-block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="about_blocks">
  <div class="about_blocks__block1"></div>
  <div class="about_blocks__block2"></div>
  <div class="about_blocks__block3"></div>
</div>


Ответы (0 шт):