В jQuery 1.4 всегда можно легко приостановить выполнение цепочки с помощью удобной функции delay(). Давайте поместим трехсекундную паузу в нашу цепочку:
... jQuery('.post:first') .hide() .slideDown(5000, 'linear') .delay(3000) .fadeTo('slow', .5); ...
Если пауза не работает, значит вы используете jQuery более младшей версии.
Помогите разобраться с 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(' .');
}
});
Возможно, пауза слишком маленькая.
а так пауза уже Большая…
Но не работает Вообще!
for(var i=0; i<5; i++ ){
$('body').delay(111111).append(' .'+i);
}
Попробуйте воспользоваться родной Javascript функцией setTimeout. delay() используется для задержки между последовательными эффектами. А если вам надо задержать выполнение функции, то тут только setTimeout.
я уже пробовал — это еще смешнее
$('#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
Если верить этой статье:
http://www.vertstudios.com/blog/common-problems-j…
то "JavaScript does not pause between iterations", т.е. Javascript не выполняет паузу между итерациями. Там дается объяснение, почему пауза может не работать в цикле. Посмотрите, пожалуйста.
при моем незнании английского — пришлось понимать это самому..
теперь вычитываю чужие скрипты где есть хоть какой-то намек на реализацию паузы
вот Это Работает! :)
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);
};
}
С delay просто много проблем, она может то работать, то не работать, и все зависит от случая, как я понял, пробежавшись по английской документации. За пример вам плюсик в карму)