Wait() или sleep() в jquery?

Я хочу добавить класс, подождать 2 секунды и добавить еще один класс.

.addClass("load").wait(2sec).addClass("done");

Есть ли способ?

Ответ 1

setTimeout выполнит некоторый код после задержки некоторого периода времени (измеряется в миллисекундах). Однако важно отметить: из-за характера javascript остальная часть кода продолжает работать после установки таймера:

$('#someid').addClass("load");

setTimeout(function(){
  $('#someid').addClass("done");
}, 2000);

// Any code here will execute immediately after the 'load' class is added to the element.

Ответ 2

Это будет .delay().

http://api.jquery.com/delay/

Если вы делаете AJAX-материал tho, вам действительно не следует просто писать "done", вы должны действительно ждать ответа и посмотреть, действительно ли это сделано.

Ответ 3

Поймите, что это старый вопрос, но я написал плагин для решения этой проблемы, который может оказаться полезным.

https://github.com/madbook/jquery.wait

позволяет сделать это:

$('#myElement').addClass('load').wait(2000).addClass('done');

Ответ 4

delay() не будет выполнять задание. Проблема с задержкой() является частью системы анимации и применяется только к очередям анимации.

Что делать, если вы хотите подождать до выполнения чего-то вне анимации?

Используйте это:

window.setTimeout(function(){
                 // do whatever you want to do     
                  }, 600);

Что происходит?: В этом сценарии он ждет 600 миллисекунд перед выполнением кода, указанного в фигурных скобках.

Это очень помогло мне разобраться, и я надеюсь, что это поможет вам!

Ответ 5

Есть функция, но она дополнительно: http://docs.jquery.com/Cookbook/wait

Этот небольшой фрагмент позволяет подождать:

$.fn.wait = function(time, type) {
    time = time || 1000;
    type = type || "fx";
    return this.queue(type, function() {
        var self = this;
        setTimeout(function() {
            $(self).dequeue();
        }, time);
    });
};