jQuery-метод stop()
используется для остановки анимаций или эффектов jQuery, запущенных в данный момент на выбранных элементах, до их завершения.
Базовый синтаксис метода stop()
выглядит следующим образом:
$(selector).stop(stopAll, goToEnd);
Параметры в приведенном выше синтаксисе имеют следующие значения:
- Необязательный логический параметр stopAll указывает, удалять анимацию из очереди или нет. Значением по умолчанию является
false
— это означает, что только текущая анимация будет остановлена, остальные анимации в очереди будут выполняться позже. - Необязательный логический параметр goToEnd указывает, следует ли завершить текущую анимацию немедленно. Значением по умолчанию является
false
.
Вот простой пример, демонстрирующий метод stop()
, в котором вы можете запускать и останавливать анимацию по нажатию кнопки.
<script>
$(document).ready(function(){
// Запускаем анимацию
$(".start-btn").click(function(){
$("img").animate({left: "+=150px"}, 2000);
});
// Останавливаем запущенную анимацию
$(".stop-btn").click(function(){
$("img").stop();
});
// Запускаем анимацию в обратном направлении
$(".back-btn").click(function(){
$("img").animate({left: "-=150px"}, 2000);
});
// Восстанавливаем значения по умолчанию
$(".reset-btn").click(function(){
$("img").animate({left: "0"}, "fast");
});
});
</script>
jQuery-метод stop()
работает для всех эффектов jQuery, таких как fading, sliding, show и hide, а также пользовательских анимаций.
Вот еще один пример этого метода, в котором, если вы снова нажмете кнопку «Переключить слайд» после запуска анимации, но до ее завершения, анимация начнется в противоположном направлении сразу от сохраненной начальной точки.
<script>
$(document).ready(function(){
// Переключаем текущую скользящую анимацию
$(".toggle-btn").on("click", function(){
$(".box").stop().slideToggle(1000);
});
});
</script>
Создание эффекта плавного наведения
При создании анимированного эффекта наведения мыши одной из распространенных проблем, с которыми вы можете столкнуться, являются множественные анимации в очереди, когда вы быстро устанавливаете и удаляете курсор мыши.
Потому что в этой ситуации события mouseenter
или mouseleave
запускаются быстро до завершения анимации. Чтобы избежать этой проблемы и создать приятный и плавный эффект наведения, вы можете добавить stop(true, true)
в цепочку методов, например:
<script>
$(document).ready(function(){
$(".box").hover(function(){
$(this).find("img").stop(true, true).fadeOut();
}, function(){
$(this).find("img").stop(true, true).fadeIn();
});
});
</script>
jQuery-метод stop(true, true)
очищает все анимации в очереди и возвращает текущую анимацию к конечному значению.