Функция задержки jquery с оператором IF

0

Может ли кто-нибудь сказать мне, почему мой оператор IF запускается перед обновлением пользовательского интерфейса с каждым циклом?

Код в основном хочет отложить добавление классов CSS в пользовательский интерфейс, после того как каждый добавлен, перенаправить пользователя. Он сейчас прямо направляет?!

$("#logo").click(function() {

    //define variables:
    var eventDuration = 500;
    var elementArray = ['ribbon', 'left-panel', 'wid-id-1', 'wid-id-2'];
    var animationArray = ['slideOutRight', 'slideOutLeft', 'rotateOutUpRight', 'rotateOutUpRight'];

    //Loop through elements and update UI with timer function:
    $.each(elementArray, function(index, value) {

        //Increments the delay of the element updates:
        var delaytimer = index * eventDuration + eventDuration;

        //Adds animation css classes to onpage elements:
        $('#' + value).delay(delaytimer).queue(function() {
            $(this).addClass('animated ' + animationArray[index]).dequeue();
        });

        //Once complete redirect to the home page:
        if (index === 3) {
            $(this).delay(delaytimer + 500).queue(function() {
                window.location.replace('/').dequeue;
            });
        }

    });
});
  • 0
    Также приветствуется любая критика вышеупомянутого jquery. Уверен, мне не нужно "dequeue" в конце замены локации. Любую вещь было бы полезно узнать ... Будьте добры!
  • 0
    поставить console.log(delaytimeer) и проверить рассчитанное значение. Поместите это ниже этой строки var delaytimer = index * eventDuration + eventDuration; и разместите здесь
Теги:
arrays

1 ответ

1
Лучший ответ

Оператор if выполняется немедленно, потому что он не находится внутри функции задержки. Попробуйте переместить его туда.

$('#' + value).delay(delaytimer).queue(function() {
        $(this).addClass('animated ' + animationArray[index]).dequeue();


       //Once complete redirect to the home page:
       if (index === 3) {
            $(this).delay(delaytimer + 500).queue(function() {
               window.location.replace('/').dequeue;
           });
       }
    });
  • 0
    Спасибо! Работает отлично сейчас.
  • 0
    Рад, рад помочь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню