Ответы:
Встроенный javascript setTimeout .
setTimeout(
function()
{
//do something special
}, 5000);
ОБНОВЛЕНИЕ : вы хотите подождать с момента окончания загрузки страницы, поэтому поместите этот код в ваш $(document).ready(...);скрипт.
ОБНОВЛЕНИЕ 2 : jquery 1.4.0 представил .delayметод. Проверьте это . Обратите внимание, что .delay работает только с очередями эффектов jQuery.
setTimeout.
Используйте обычный таймер JavaScript:
$(function(){
function show_popup(){
$("#message").slideUp();
};
window.setTimeout( show_popup, 5000 ); // 5 seconds
});
Это будет ждать 5 секунд после того, как DOM будет готов. Если вы хотите подождать, пока страница действительно loadedне появится, вам нужно использовать это:
$(window).load(function(){
function show_popup(){
$("#message").slideUp();
};
window.setTimeout( show_popup, 5000 ); // 5 seconds
})
РЕДАКТИРОВАТЬ: В ответ на комментарий ОП спрашивает, есть ли способ сделать это в jQuery и не использовать setTimeoutответ «нет». Но если вы хотите сделать его более «jQueryish», вы можете обернуть его так:
$.wait = function( callback, seconds){
return window.setTimeout( callback, seconds * 1000 );
}
Вы могли бы тогда назвать это так:
$.wait( function(){ $("#message").slideUp() }, 5);
Я столкнулся с этим вопросом, и я думал, что предоставлю обновление по этой теме. jQuery (v1.5 +) включает Deferredмодель, которая (несмотря на то , что она не придерживалась спецификации Promises / A до jQuery 3) обычно рассматривается как более четкий способ решения многих асинхронных задач. Реализация $.wait()метода с использованием этого подхода особенно читабельна, я считаю:
$.wait = function(ms) {
var defer = $.Deferred();
setTimeout(function() { defer.resolve(); }, ms);
return defer;
};
И вот как вы можете использовать это:
$.wait(5000).then(disco);
Однако, если после паузы вы хотите выполнять действия только с одним выбором jQuery, то вы должны использовать нативный jQuery, .delay()который, как я считаю, также использует Deferred под капотом:
$(".my-element").delay(5000).fadeIn();
setTimeout(function(){
},5000);
Разместите свой код внутри { }
300 = 0.3 seconds
700 = 0.7 seconds
1000 = 1 second
2000= 2 seconds
2200 = 2.2 seconds
3500 = 3.5 seconds
10000 = 10 seconds
и т.п.
Используете это для наложения сообщений, которое может быть немедленно закрыто по щелчку или оно выполнит автозаполнение через 10 секунд.
button = $('.status-button a', whatever);
if(button.hasClass('close')) {
button.delay(10000).queue(function() {
$(this).click().dequeue();
});
}
.delay()и он может быть вложенным
Библиотека Underscore также предоставляет функцию «задержки»:
_.delay(function(msg) { console.log(msg); }, 5000, 'Hello');
Основываясь на ответе Джои, я придумал предполагаемое (от jQuery, прочитанное о «очереди») решение.
Он в некоторой степени соответствует синтаксису jQuery.animate () - позволяет связывать его с другими функциями fx, поддерживает «медленный» и другие jQuery.fx.speeds, а также является полностью jQuery. И будет обрабатываться так же, как анимации, если вы их остановите.
Тестовую площадку jsFiddle с большим количеством применений (например, показом .stop ()) можно найти здесь .
Суть решения:
$('<queue/>')
.delay(100 /*ms*/)
.queue( (next) => { $('#result').text('done.'); next(); } );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result"></div>
все как плагин, поддерживающий использование $ .wait () и $ (..). wait ():
// add wait as $.wait() standalone and $(elem).wait() for animation chaining
(function($) {
$.wait = function(duration, completeCallback, target) {
$target = $(target || '<queue />');
return $target.delay(duration).queue(function(next){completeCallback && completeCallback.call($target); next();});
}
$.fn.wait = function(duration, completeCallback) {
return $.wait.call(this, duration, completeCallback, this);
};
})(jQuery);
//TEST
$(function() {
// stand alone
$.wait(1000, function() {
$('#result')
.append('...done');
});
// chained
$('#result')
.append('go...')
.wait('slow', function() {
$(this).append('after slow');
})
.css({color: 'green'});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result"></div>
Примечание: поскольку ожидание добавляет в стек анимации, $ .css () выполняется немедленно - как и предполагалось: ожидаемое поведение jQuery.
Поймите, что это старый вопрос, но я написал плагин для решения этой проблемы, который кто-то может найти полезным.
https://github.com/madbook/jquery.wait
позволяет вам сделать это:
$('#myElement').addClass('load').wait(2000).addClass('done');