javascript - JavaScript for 循环中的 jQuery 不起作用

标签 javascript jquery css loops animation

我试图在这样的 for 循环中运行 jQuery:

var frameNumber = 15; // How many frames are in your animation

for(var i = 1; i < frameNumber + 1; i++){
    var flipDelay = i * 100;

    $('.flipbook').delay(flipDelay).addClass('flipbook-' + i);
}

我正在尝试获得与此等效的功能,但具有更大的灵 active ,因此我可以更改我使用的帧数:

$(function(){
    setTimeout(function(){ $(".flipbook").addClass("flipbook-1") }, 100 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-2") }, 200 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-3") }, 300 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-4") }, 400 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-5") }, 500 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-6") }, 600 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-7") }, 700 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-8") }, 800 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-9") }, 900 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-10") }, 1000 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-11") }, 1100 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-12") }, 1200 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-13") }, 1300 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-14") }, 1400 );
    setTimeout(function(){ $(".flipbook").addClass("flipbook-15") }, 1500 );
});

这些类是在 CSS 样式表中定义的,每个类都应用了不同的背景。我只需要 jQuery/JS 循环遍历它们,直到到达最后一帧。

编辑:不是 flipbook-01 与 flipbook-1 阻止我让它工作。抱歉造成困惑。

编辑:我需要我的 div 在函数运行后看起来像这样:

<div class="flipbook flipbook-1 flipbook-2 flipbook-3 flipbook-4 ... flipbook-15"></div>

最佳答案

您滥用了 delay()功能。 jQuery 只会排队开箱即用的效果(例如 fadeIn()slideUp() ),而不是像 show() 这样的东西。 , hide() , 或 addClass() .

非工作示例 delay()addClass() : http://jsbin.com/hayay/4/

相反,您应该只使用 setTimeout就像其他人提到的那样。不过,我建议使用递归方法,而不是 for循环:

var frameNumber = 15;
showFrame(1);
function showFrame(i) {
  $('.flipbook').addClass('flipbook-' + i);
  if (i < frameNumber) {
    setTimeout(function() { showFrame(i+1); }, 100);
  }
}

关于javascript - JavaScript for 循环中的 jQuery 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23098777/

相关文章:

javascript - setInterval() 不适用于旋转

Android - 奇怪的行为 html 样式最大宽度

css - <select multiple> 破坏 CSS 网格

asp.net - 控件的 CssClass 字段在 Init 上更改

javascript - 如何在 React Native 中分享社交网络上的深层链接

javascript - window.document.getElementById ("link").setAttribute ("href","www.google.com") 是否有任何替代方案;

javascript - 显示 asp 文本框中文本的提示

javascript - 替换点击时动态生成的图像

javascript - 使用 Javascript/Jquery 计算表中的数据

javascript - X O 游戏(我如何证明玩家一(p1)或玩家二(p2)如果达到(var winBoxes)中的条件之一就会获胜