Вот моя скрипка ссылка.
Так что у меня будет несколько шагов, которые нужно анимировать один за другим. И чтобы сделать их анимированными один за другим, я использовал некоторую переменную flag
. В зависимости от его значения соответствующий шаг должен быть анимирован.
Но есть одна проблема - его значение не меняется на первом шаге, и поэтому, когда вы нажимаете на 2 (на временной шкале), анимируется только первый шаг. Проблема заключается в приведенной ниже части, когда я анимирую каждую стрелку одну за другой в функции each(), а значение переменной flag
изменяется в последней итерации стрелок:
var flag = 0;
function step_1(){
jQuery(".step_1_nav").addClass('active_bullet_point');
jQuery(".step_1 .label").addClass('active_label_text');
var delay = 0;
jQuery('.step_1 .arrows span').each(function(index) {
var $this = $(this);
var total = $('.step_1 .arrows span').length;
$this.delay(delay).animate({opacity:1}, 100, function(){
$this.addClass('white_animated_arrow');
if (index === (total - 1)) {
jQuery(".step_1 .bullet_point").addClass('active_bullet_point');
flag = 1;
}
});
delay += 100;
});
}
jQuery(".step_2_nav").click(function(){
step_1();
console.log(flag); /* here flag returns 0 instead of 1 */
step_2();
});
Когда я помещаю эту часть
if (index === (total - 1)) {
jQuery(".step_1 .bullet_point").addClass('active_bullet_point');
flag = 1;
}
out of animate значение флага функции обратного вызова изменяется на 1, но это происходит немедленно, не дожидаясь последней итерации стрелки, и все 2 шага анимируются немедленно.
Что мне здесь не хватает? Любые идеи, пожалуйста?