Я пытаюсь создать эффект, когда страница загружается, и через 5 секунд сообщение об успехе на экране исчезает или перемещается вверх.
Как мне этого добиться?
Встроенный javascript setTimeout .
setTimeout(
function()
{
//do something special
}, 5000);
ОБНОВЛЕНИЕ : вы хотите подождать с момента окончания загрузки страницы, поэтому поместите этот код в ваш $(document).ready(...);
скрипт.
ОБНОВЛЕНИЕ 2 : jquery 1.4.0 представил .delay
метод. Проверьте это . Обратите внимание, что .delay работает только с очередями эффектов jQuery.
setTimeout
.Используйте обычный таймер JavaScript:
Это будет ждать 5 секунд после того, как DOM будет готов. Если вы хотите подождать, пока страница действительно
loaded
не появится, вам нужно использовать это:РЕДАКТИРОВАТЬ: В ответ на комментарий ОП спрашивает, есть ли способ сделать это в jQuery и не использовать
setTimeout
ответ «нет». Но если вы хотите сделать его более «jQueryish», вы можете обернуть его так:Вы могли бы тогда назвать это так:
источник
Я столкнулся с этим вопросом, и я думал, что предоставлю обновление по этой теме. jQuery (v1.5 +) включает
Deferred
модель, которая (несмотря на то , что она не придерживалась спецификации Promises / A до jQuery 3) обычно рассматривается как более четкий способ решения многих асинхронных задач. Реализация$.wait()
метода с использованием этого подхода особенно читабельна, я считаю:И вот как вы можете использовать это:
Однако, если после паузы вы хотите выполнять действия только с одним выбором jQuery, то вы должны использовать нативный jQuery,
.delay()
который, как я считаю, также использует Deferred под капотом:источник
Разместите свой код внутри
{ }
и т.п.
источник
Используете это для наложения сообщений, которое может быть немедленно закрыто по щелчку или оно выполнит автозаполнение через 10 секунд.
источник
.delay()
и он может быть вложеннымБиблиотека Underscore также предоставляет функцию «задержки»:
источник
Основываясь на ответе Джои, я придумал предполагаемое (от jQuery, прочитанное о «очереди») решение.
Он в некоторой степени соответствует синтаксису jQuery.animate () - позволяет связывать его с другими функциями fx, поддерживает «медленный» и другие jQuery.fx.speeds, а также является полностью jQuery. И будет обрабатываться так же, как анимации, если вы их остановите.
Тестовую площадку jsFiddle с большим количеством применений (например, показом .stop ()) можно найти здесь .
Суть решения:
все как плагин, поддерживающий использование $ .wait () и $ (..). wait ():
Примечание: поскольку ожидание добавляет в стек анимации, $ .css () выполняется немедленно - как и предполагалось: ожидаемое поведение jQuery.
источник
источник
Поймите, что это старый вопрос, но я написал плагин для решения этой проблемы, который кто-то может найти полезным.
https://github.com/madbook/jquery.wait
позволяет вам сделать это:
источник