Как вызвать функцию после fadeOut() для многих элементов
У меня есть этот код:
$('.hotel_photo_select').fadeOut(500, function () {
alert("Now all '.hotel_photo_select are hidden'");
});
и я бы хотел вызвать это оповещение только тогда, когда ВСЕ .hotel_photo_select
являются fadeOuted (так, скрыто).
Как я могу это сделать? С моим кодом вызывается предупреждение после первого элемента fadeout...
Ответы
Ответ 1
Вы можете использовать метод prom() для этого (на странице документа есть хороший пример).
Метод .promise() возвращает динамически сгенерированное обещание, которое разрешено после того, как все действия определенного типа связаны с коллекцией, в очереди или нет, закончились.
Применительно к вашему примеру должно быть что-то вроде этого:
$.when($('.hotel_photo_select').fadeOut(500))
.done(function() {
alert("Now all '.hotel_photo_select are hidden'");
});
Ответ 2
Использование функций jQuery $.when().then()
.
$(document).ready(function(){
// using When & then methods.
$.when($('.box').fadeOut())
.then(function(){
alert("All Boxes : Faded Out.");
});
});
.box{
color: white;
background-color: red;
width: 100px;
height: 100px;
text-align: center;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<html>
<head>
<title>Calling Alert After fadeOut</title>
</head>
<body>
<div class="box">Box 1</div> <br />
<div class="box">Box 2</div> <br />
<div class="box">Box 3</div> <br />
<div class="box">Box 4</div> <br />
<div class="box">Box 5</div>
</body>
</html>