задержка добавления класса — jquery

#javascript #jquery

#javascript #jquery

Вопрос:

Я пытаюсь отложить addclass функцию в этом плагине, однако она не работает. Я добавил .delay(14000) непосредственно перед .addClass функцией.

Код:

 if (typeof a.cookieguard.displayMessage === "undefined") {
    a.cookieguard.displayMessage = function (b, c) {
        a("body").delay(14000)
                 .addClass("cookie-guard")
                 .attr("marginTop", a("body").css("marginTop"))
                 .css("margin", 0)
                 .delay(b).animate({
                      marginTop: a(".cookie-guard-msg").outerHeight()
                  }, a.cookieguard.settings.slideSpeed);

        a(".cookie-guard-msg").css("top", -a(".cookie-guard-msg").outerHeight());

        a(".cookie-guard-msg").delay(b)
                              .show()
                              .animate({top: 0}, a.cookieguard.settings.slideSpeed);

        if (a.cookieguard.settings.messageHideDelay != null) {
            a.cookieguard.settings.messageHideTimeout = setTimeout(function () {
                a.cookieguard.hideMessage(0)
            }, c)
        }
    }
}
  

Что я делаю не так?

Ответ №1:

jQuery .delay() работает только с вызовами, которые используют очередь эффектов jQuery (например, обычные анимации).

Чтобы сделать то, что вам здесь нужно, я бы использовал обычный JavaScript setTimeout :

 setTimeout(function() { a("body").addClass("cookie-guard"); /* etc. */ }, 14000);
  

Комментарии:

1. Ух ты, рад, что все улажено! 🙂