Отмена fadeOut() при наведении на блок

260
20 августа 2017, 07:01

Имеется код:

$('.button').on('click', function() { 
  $('.response').text('Success'); 
  if ($('.response').fadeIn()) $('.response').delay(1000).fadeOut(); 
});
.button { 
  width: 100px; 
  height: 20px; 
  background: gray; 
} 
 
.response { 
  display: none; 
  width: 100px; 
  height: 100px; 
  background: red; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div class="button">Click Me</div> 
<div class="response"></div>

Как сделать так, чтобы анимация отменялась при наведении на блок .response, и как только мышь за границами .response .fadeOut() срабатывал?

Answer 1

Используйте для этого setTimeout() и clearTimeout():

var timeout; 
$('.button').on('click', function() { 
  $('.response').text('Success'); 
  $('.response').fadeIn(); 
  timeout = setTimeout(function() { 
    $('.response').fadeOut(); 
  }, 1000); 
}); 
 
$('.response').on('mouseover', function() { 
  clearTimeout(timeout); 
}).on('mouseout', function() { 
  timeout = setTimeout(function() { 
    $('.response').fadeOut(); 
  }, 1000); 
});
.button { 
  width: 100px; 
  height: 20px; 
  background: gray; 
} 
 
.response { 
  display: none; 
  width: 100px; 
  height: 100px; 
  background: red; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div class="button">Click Me</div> 
<div class="response"></div>

READ ALSO
Собрать многомерный массив

Собрать многомерный массив

Пытаюсь собрать $amount массивов:

248
Как правильно удалить лишние пробелы в строке?

Как правильно удалить лишние пробелы в строке?

Как правильно удалить лишние пробелы в строке? * - это пробел

508
не скачивается excel - PHP

не скачивается excel - PHP

почему после формирования файл не скачивается?

259
Как реализовать метки на сайте?

Как реализовать метки на сайте?

Тупой и странный вопросНужно создать обработку и создание меток на сайте наподобие как на этом сайте

397