Сон в JQuery?
приветствия всех
Я хочу, чтобы JQuery спал/дожидался секунды между двумя функциями
$('#div1').hide();
//sleep or wait or for a sec
$("#div2").show();
как это сделать?
Ответы
Ответ 1
Для вашей конкретной функции .show()
не поставлено в очередь, но есть простой трюк, чтобы сделать его поставленным в очередь, чтобы вы могли использовать .delay()
, например:
$('#div1').hide();
$("#div2").delay(1000).show(0);
Давая ему аргумент продолжительности 0
, теперь он мгновенно, но в очереди анимации. Под этим используется setTimeout()
, так что это в основном такое же поведение, как:
$('#div1').hide();
setTimeout(function() { $("#div2").show(); }, 1000);
Ответ 2
Здесь ya go!
$('#div1').hide();
//sleep or wait or for a sec
setTimeout('moomoo()', 1000);
function moomoo() {
$("#div2").show();
}
Ответ 3
Следующее должно делать то, что вы хотите:
$("#div1").hide();
$("#div2").delay(1000).show(0);
Ответ 4
Вы не можете просто приостановить выполнение кода между вызовами. Это означало бы, что браузер не будет отображать изменения, вызванные вызовом hide
, поскольку обновления не выполняются во время работы кода. Код просто ничего не сделал бы.
Используйте метод setTimeout
для планирования кода, который будет выполнен позднее:
$('#div1').hide();
window.setTimeout(function(){
$("#div2").show();
}, 1000);
Это установит элемент как скрытый и заплатит код, чтобы показать его, чтобы начать позже. Код будет продолжать после вызова setTimeout
, чтобы функция могла выйти, и браузер возвращает элемент управления, чтобы он мог фактически скрыть элемент.
Ответ 5
Никакого реального сна, но это достигнет той же цели:
$('#div1').hide();
//sleep or wait or for a sec
window.setTimeout(function() { $("#div2").show(); }, 1000);
Изменить: хорошо, теперь я исправляю "настоящий" сон, однако использование setTimeout по-прежнему является действительным решением "чистого JS" - вашим выбором.:)