2013-01-23 72 views
4

我試圖通過滑塊來創建文本動畫的環... 我嘗試循環,但它沒有工作.. 你能告訴我怎麼做我這個循環腳本forever..thanks如何讓這個jQuery動畫代碼循環永久?

<script> 
$(document).ready(function() { 
    $("#header").hide(); 
    var headerOne='I'; 
    var headerTwo='Am'; 
    var headerThree='So'; 
    var headerFour='Cool'; 
     $("#header").html(headerOne); 
    $("#header").fadeIn(1000); 
    $('#header').delay(1000).fadeOut(1000,function(){ 
    $(this).html(headerTwo).fadeIn(1000); 
    $('#header').delay(1000).fadeOut(1000,function(){ 
    $(this).html(headerThree).fadeIn(1000); 
    $('#header').delay(1000).fadeOut(1000,function(){ 
    $(this).html(headerFour).fadeIn(1000).delay(1000).fadeOut(1000);  
     }); 
     }); 
    }); 

}); 
</script> 

謝謝!

+0

的setInterval可以幫助'的setInterval(「JavaScript函數」,毫秒);' –

+0

@Bondye,如果這是一個答案那就活該2個downvotes - 一個混合'setInterval'與jQuery動畫,另一個用於傳遞字符串到'setInterval'。 – Alnitak

回答

12

如果你清理了一下你的代碼。你可以意識到setInterval是不需要的。只需使用最後一次回調即可重複動畫。

$(function() { 
    var $header = $("#header"); 
    var header = ['I', 'Am', 'So', 'Cool']; 
    var position = -1; 

    !function loop() { 
     position = (position + 1) % header.length; 
     $header 
      .html(header[position]) 
      .fadeIn(1000) 
      .delay(1000) 
      .fadeOut(1000, loop); 
    }(); 
}); 

See it here.

+0

+1非常好的答案 – Alnitak

+0

除了'.queue'函數不需要,因爲'.html'調用總是鏈中的第一個函數。 – Alnitak

+0

是的,因爲重新排序 – Alexander

0

您可以使用recurence,最後的fadeOut完成後會執行重複功能。

function repeat() { 
    $("#header").hide(); 
    var headerOne='I'; 
    var headerTwo='Am'; 
    var headerThree='So'; 
    var headerFour='Cool'; 
    $("#header").html(headerOne); 
    $("#header").fadeIn(1000); 
    $('#header').delay(1000).fadeOut(1000,function() { 
     $(this).html(headerTwo).fadeIn(1000); 
     $('#header').delay(1000).fadeOut(1000,function() { 
      $(this).html(headerThree).fadeIn(1000); 
      $('#header').delay(1000).fadeOut(1000,function() { 
       $(this).html(headerFour).fadeIn(1000).delay(1000). 
        fadeOut(1000, repeat); 
      }); 
     }); 
    }); 
} 

$(document).ready(function() { 
    repeat(); 
}); 
+0

或'$(document).ready(repeat)',如果這是唯一的功能叫 – Alnitak

+0

@Alnitak你的權利或$(重複);'簡稱。 – jcubic

+0

啊是的,我忘記了甚至更短的語法! ;) – Alnitak

-1

創建一個遞歸和自動執行功能,並把它作爲最終的回調:

附:花了自由清理你的代碼。

$(function() { 
    (function repeat() { 
     var header = $("#header"), 
      headerOne = 'I', 
      headerTwo = 'Am', 
      headerThree = 'So', 
      headerFour = 'Cool'; 

     header.text(headerOne) 
      .fadeIn(1000) 
      .delay(1000) 
      .fadeOut(1000, function() { 
      header.text(headerTwo) 
       .fadeIn(1000) 
       .delay(1000) 
       .fadeOut(1000, function() { 
       header.text(headerThree) 
        .fadeIn(1000) 
        .delay(1000).fadeOut(1000, function() { 
        header.text(headerFour) 
         .fadeIn(1000) 
         .delay(1000) 
         .fadeOut(1000, repeat); 
       }); 
      }); 
     }); 
    })(); 
}); 
+0

Alexander在清理代碼方面做得更好......除了一些小的語法差異外,此代碼與jcubic相同。 – Alnitak

+0

感謝它的工作! – designerNProgrammer

+0

@RyanComputerProgrammer恕我直言,你接受了錯誤的答案。 – Alnitak