簡體   English   中英

for循環中的jQuery.animate()

[英]jQuery.animate() in a for loop

我有以下代碼:

$("." + selectedOption + ":eq(0)").show().animate({
    left: 0 + $(".option1:visible").outerWidth(),
    opacity: 1
}, 700, function() {
    $("." + selectedOption + ":eq(0)").animate({
        top: 0
    }, 700);
});

這就像我想要的那樣工作...但是我想重復多次此動畫,每次給下一個“ selectedOption”動畫,即:eq(1)、: eq(2)、: eq(3)。 所以我認為將上面的代碼放在for循環中會起作用:

for(i = 0; i < 5; i++) {
    //code here
}

當我這樣做時,它不起作用。 有什么想法嗎?

謝謝

代替foor循環,使用https://api.jquery.com/each/ ,您將需要更改:eq()

或者只是將類添加到您必須設置動畫的項目中,並在完成后將其刪除

您需要一個遞歸函數。 像這樣:

var count = 0;
function animateNextOption() {
  $("." + selectedOption + ":eq(" + count++ + ")").show().animate({
    left: 0 + $(".option1:visible").outerWidth(),
    opacity: 1
  }, 700, animateNextOption);
}
animateNextOption();

嘗試使用.queue() .promise()

 var selectedOption = "selectedOption"; $({}).queue("_fx", $.map($("." + selectedOption), function(el) { return function(next) { return $(el).animate({ opacity: 1 }, 700, function() { $(this).animate({ top: 0 }, 700) }).promise().then(next) } })).dequeue("_fx") 
 .selectedOption { position: relative; opacity: 0; top: 50px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> </script> <div class="selectedOption">1</div> <div class="selectedOption">2</div> <div class="selectedOption">3</div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM