Один из вариантов - иметь рекурсивную функцию, которая берет индекс элемента, который должен исчезнуть, и исчезает, если он существует, вызывая себя снова со следующим i
. Используйте div.eq(i)
для выбора i
-го ребенка:
const fadeOutNext = (i) => {
var div = $('.mt1');
if (!div[i]) {
return;
}
div.eq(i).fadeOut("fast", function() {
setTimeout(fadeOutNext, 5000, i + 1);
});
};
fadeOutNext(0);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mgroup">
<div class="mt1">Text 1</div> // wait 5 second and delete
<div class="mt1">Text 2</div> // wait 5 second and delete
<div class="mt1">Text 3</div> // wait 5 second and delete
<div class="mt1">Text 4</div> // wait 5 second and delete
<div class="mt1">Text 5</div> // wait 5 second and delete
</div>
Если элементам больше не нужно существовать в DOM после исчезновения, вы можете .remove()
, чтобы сделать код лучше:
const fadeOutNext = () => {
var div = $('.mt1');
if (!div.length) {
return;
}
div.eq(0).fadeOut("fast", function() {
$(this).remove();
setTimeout(fadeOutNext, 5000);
});
};
fadeOutNext();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mgroup">
<div class="mt1">Text 1</div> // wait 5 second and delete
<div class="mt1">Text 2</div> // wait 5 second and delete
<div class="mt1">Text 3</div> // wait 5 second and delete
<div class="mt1">Text 4</div> // wait 5 second and delete
<div class="mt1">Text 5</div> // wait 5 second and delete
</div>