Пауза в цепочке

В jQuery 1.4 всегда можно легко приостановить выполнение цепочки с помощью удобной функции delay(). Давайте поместим трехсекундную паузу в нашу цепочку:

...
jQuery('.post:first')
.hide()
.slideDown(5000, 'linear')
.delay(3000)
.fadeTo('slow', .5);
...

Если пауза не работает, значит вы используете jQuery более младшей версии.

Блог про WordPress
Комментарии: 9
  1. leshak

    Помогите разобраться с delay

    вместо того, что бы выводить на экран постепенно точечки….

    после паузы они выдаются сразу ВСЕ — но почему???

    тест delay

    body {

    font:15px/0.9 arial,helvetica,clean,sans-serif;

    }

    #z{

    background-color: #eeeeee;

    }

    .z {

    color: #444444;

    background-color: #dddddd;

    height: 14px;

    width: 88px;

    margin: 7px;

    cursor: pointer;

    border: solid 1px #555555;

    padding-left: 22px; padding-right: 11px;

    padding-top: 3px; padding-bottom: 3px;

    -moz-border-radius: 15px;

    -webkit-border-radius: 15px;

    }

    test dejay

    $('#test').live('click', function(){

    $('body').append(' Test:');

    for(var i=0; i<2222; i++ ){

    $('body').delay(1111).append(' .');

    }

    });

  2. Дмитрий (автор)

    Возможно, пауза слишком маленькая.

  3. leshak

    а так пауза уже Большая…

    Но не работает Вообще!

    for(var i=0; i<5; i++ ){

    $('body').delay(111111).append(' .'+i);

    }

  4. Дмитрий (автор)

    Попробуйте воспользоваться родной Javascript функцией setTimeout. delay() используется для задержки между последовательными эффектами. А если вам надо задержать выполнение функции, то тут только setTimeout.

  5. leshak

    я уже пробовал — это еще смешнее

    $('#test').live('click', function(){

    $('body').append(' Test:');

    for(var i=0; i<5; i++ ){

    window.setTimeout(function(){ $('body').append(' .'+i); }, 1000)

    //$('body').delay(1111).append(' .'+i);

    }

    });

    // Test: .5 .5 .5 .5 .5

  6. Дмитрий (автор)

    Если верить этой статье:

    http://www.vertstudios.com/blog/common-problems-j

    то "JavaScript does not pause between iterations", т.е. Javascript не выполняет паузу между итерациями. Там дается объяснение, почему пауза может не работать в цикле. Посмотрите, пожалуйста.

  7. leshak

    при моем незнании английского — пришлось понимать это самому..

    теперь вычитываю чужие скрипты где есть хоть какой-то намек на реализацию паузы

  8. leshak

    вот Это Работает! :)

    var action_count = 5 ;

    function delayed_loop(pause){

    action_count—;

    $('body').append(' .'+action_count+' ('+pause+')');

    if (action_count>0) {

    setTimeout(function(){delayed_loop(pause)},pause);

    };

    }

  9. Дмитрий (автор)

    С delay просто много проблем, она может то работать, то не работать, и все зависит от случая, как я понял, пробежавшись по английской документации. За пример вам плюсик в карму)

Добавить комментарий для leshak Отменить ответ

Получать новые комментарии по электронной почте.