2013-05-19 3 views
1

Я видел пример, используя привязку привязки для этого. Однако это не будет работать для неограниченного количества изображений. Функция .each, вызываемая несколькими изображениями, приведет к их постепенному исчезновению. Существуют ли какие-либо функции, такие как .each, доступный для цикла, который блокируется при выполнении?Как затухать изображения один за другим?

ответ

6

Вы можете использовать JQuery delay метод:

$('img').each(function(i) { 
    $(this).delay(i * 400).fadeIn(); 
}); 
+2

скрипку вы '->' http://jsfiddle.net/4uqzA/1/ –

+0

как это сделать один за другим ?? вы рассчитываете на таймеры. Вы можете пропустить полный fadeIn и привязать его к счетчику итераций, так что теперь вы будете использовать img, который будет использоваться. Это будет лучше ИМО. –

+1

'i' увеличивается с каждым последующим изображением – PitaJ

1

Вы никогда не должны использовать (или даже думать о) блокирующих методов в JavaScript. Вы можете указать обратный вызов для метода fadeIn. Он будет вызываться после завершения анимации. В вашем обратном вызове вы можете начать анимацию следующего изображения.

1

"Есть ли какие-либо функции, такие как .each, доступный для цикла, который является блокировкой в ​​исполнении?"

No.

«Я видел пример использования цепочки SetTimeout, чтобы сделать это. Однако, что не будет работать на неопределенное количество изображений.»

Это будет работать, если функция будет использовать себя как обратный вызов. Например:

var images = [ '#img1', '#img2', '#img3' ], index = 0; 
function fade() { 
    if (index < images.length) { 
    $(images[index++]).fadeIn(fade); 
    } 
} 
fade(); 
1
function fadeInComplete(i,$imgs) 
{ 

    if (i >= $imgs.length) return; 
    $imgs[i].fadeIn(400,fadeInComplete.bind(i+1,$imgs); 
} 

$imgs = $('img'); 
fadeInComplete(0,$imgs); 
Смежные вопросы