我在jquery中有一个.each循环,可以淡出图像以在后台显示它们。每个后续图像都分配有增加的延迟。通过单击是否可以暂停这样的循环?
<?php
$ttlart = count($rows);
echo "var ttlart = " . $ttlart . ";";
foreach ($rows as $ro) {
$fadedur = $ro['fadedur'];
echo "fadedur = " . $fadedur . ";";
$staysonscreen = $ro['staysonscreen'];
echo "staysonscreen= " . $staysonscreen . ";";
$order = $ro['order'];
echo "order= " . $order. ";";
echo "$(\"#" . $order . "\").css(\"font-size\",fadedur);";
echo "$(\"#" . $order . "\").css(\"text-indent\",staysonscreen);";
//echo "alert(\"here\");";
}
?>
var artdelay = 0;
var playstop = 0;
var ctr = 1;
$($("#images img").get().reverse()).each(function(){
fadedur = parseInt($(this).css("font-size"));
staysonscreen = parseInt($(this).css("text-indent"));
artdelay = artdelay+staysonscreen;
if (ctr < ttlart){
$(this).delay(artdelay).fadeOut(fadedur);
artdelay = artdelay+fadedur;
$(".jp-controls").click(function(){
if(playstop == 0){
$("#images img").stop(true);
playstop = 1;
}else{ //alert(artdelay);
$("#images img").delay(artdelay).fadeOut(fadedur);
playstop = 0;}
});
ctr=ctr+1;}
});
最佳答案
您可能可以执行以下操作:
http://jsfiddle.net/EJ6Yg/
$(document).ready(function () {
var delay = 200;
$('div').each(function () {
$(this).delay(delay).fadeOut('slow');
delay *= 1.5;
});
});
当然,用图像的某些选择器替换
div
。阅读您的更新后,我认为我看到了问题-您正在使用
delay()
,但您希望能够暂停或停止动画。jQuery API特别提到了这一点:
.delay()方法最适合在排队的jQuery之间进行延迟
效果。因为它是有限的,例如,它没有提供一种方法来
消除延迟-.delay()不能替代JavaScript的本机
setTimeout函数,可能更适合某些用途
案件。
我认为这是
setTimeout
更合适的用例。关于jquery - 暂停.each淡入淡出循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17681256/