Я уверен, что есть простое решение этой проблемы, но я не могу ее найти..delay() не ведет себя так, как ожидалось
Я создал функцию, которая заставляет строки текста исчезать последовательно, один за другим, вызывая метод .fadeOut()
на элементе .each()
в массиве.
Однако, когда я запускаю точно такой же код, но с помощью метода .css()
(чтобы повернуть текст красным), он меняет их все сразу, а не последовательно, как указано выше.
Может ли кто-нибудь объяснить, почему это так?
https://jsfiddle.net/v9hzpuf6/3/
Заранее спасибо
EDIT Включая код здесь:
<h1>Example 1: .fadeOut()</h1>
<h2>Works as expected...</h2>
<p class="top">line 1</p>
<p class="top">line 2</p>
<p class="top">line 3</p>
<button class="ex1">"Go"</button>
<h1>Example 2: .css()</h1>
<h2>Doesn't work as expected...</h2>
<p class="bottom">line 1</p>
<p class="bottom">line 2</p>
<p class="bottom">line 3</p>
<button class="ex2">Go</button>
JS:
$("button.ex1").on("click", function() {
$(".top").each(function(index) {
$(this).delay(400 * index).fadeOut();
});
});
$("button.ex2").on("click", function() {
$(".bottom").each(function(index) {
$(this).delay(400 * index).css("color", "red");
});
});
'задержка()' влияет только на различные очереди JQuery поддерживает, что 'CSS()' не используется. Чтобы добиться эффекта для метода 'css()', вы можете использовать таймер, либо 'setInterval()', либо 'setTimeout()' будет работать. –
Или введите свой код в очередь https://jsfiddle.net/v9hzpuf6/5/ –