gpt4 book ai didi

javascript - JS/jQuery 延迟循环以获得期望的结果(延迟()不工作)

转载 作者:行者123 更新时间:2023-11-30 18:50:16 25 4
gpt4 key购买 nike

我正在尝试通过循环移动图像的 css“背景位置”来创建加载图标:

$('#LoginButton').click(function () {

var i = 1, h = 0, top;

for (i = 0; i <= 12; i++) {
h = i * 40;
top = h + 'px';
$('#ajaxLoading').css('background-position', '0 -' + top).delay(800);
}

});

这里的问题是它运行得很快,所以我看不到移动背景的“动画”。所以我添加了 jquerys delay(),但是:

delay(800) 不起作用,因为 delay() 仅适用于 jquery 动画效果,而 .css() 不是其中之一。

如何延迟这个循环?

最佳答案

我建议使用 jQuery 计时器插件:http://jquery.offput.ca/js/jquery.timers.js

$('#LoginButton').click(function () {
var times = 13;
var delay = 300;
var h = 0, top;
$(document).everyTime(delay, function(i) {
top = h + 'px';
$('#ajaxLoading').css('background-position', '0 -' + top);
h += 40;
}, times);
});

如果您不需要任何插件,请使用 setInterva/clearInterval:

$('#LoginButton').click(function () {
var delay = 300;
var times = 13;
var i = 0, h = 0, top;

doMove = function() {
top = h + 'px';
$('#ajaxLoading').css('background-position', '0 -' + top);
h += 40;

++i;
if( i >= times ) {
clearInterval( interval ) ;
}
}

var interval = setInterval ( "doMove()", delay );
});

关于javascript - JS/jQuery 延迟循环以获得期望的结果(延迟()不工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4152933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com