我在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;}
});
答案 0 :(得分:0)
不确定我是否正确理解你的问题,但尝试这样的事情。
$.each($).wait(1000, function(index) {
// Sets a 1 second delay between iterations
});
答案 1 :(得分:0)
你可能会做这样的事情:
$(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
更合适的用例。