2014-09-27 129 views
0

這裏是我想要替換在jQuery中每隔幾秒執行一次執行?

$(document).ready(function() { 
    var startSlider = function() { 
     var startSlide = $(".slider li:first"); 
     var nextSlide = $(".active").next("li"); 
     $(".active").removeClass(); 
     $(".inactive").removeClass(); 
     if(nextSlide.html() == null) 
     {nextSlide = startSlide;} 
     nextSlide.addClass("active"); 
     nextSlide.siblings().addClass("inactive"); 
     setTimeout(startSlider, 4000); 
    }; 
    setTimeout(startSlider, 100); 
}); 

我想刪除startSlider功能和使用

setTimeout(function(){ 
var startSlide = $(".slider li:first"); 
     var nextSlide = $(".active").next("li"); 
     $(".active").removeClass(); 
     $(".inactive").removeClass(); 
     if(nextSlide.html() == null) 
     {nextSlide = startSlide;} 
     nextSlide.addClass("active"); 
     nextSlide.siblings().addClass("inactive"); 
    } 
, 4000); 

但它不工作有什麼建議的代碼?

+0

定義「不工作」 - 你得到一個錯誤?它確實出乎意料? – 2014-09-27 15:11:24

+0

控制檯中的任何錯誤? – paolo 2014-09-27 15:11:27

+0

幻燈片不會像我使用startSlider時那樣消失。 – 2014-09-27 15:12:59

回答

1

隨着你的第一個代碼的工作,因爲它是遞歸函數。但隨着你的第二個代碼,你需要使用的setInterval,而不是setTimeout函數,這將運行每4秒:

setInterval(function(){ // consider using setInterval instead of setTimeout 
var startSlide = $(".slider li:first"); 
     var nextSlide = $(".active").next("li"); 
     $(".active").removeClass(); 
     $(".inactive").removeClass(); 
     if(nextSlide.html() == null) 
     {nextSlide = startSlide;} 
     nextSlide.addClass("active"); 
     nextSlide.siblings().addClass("inactive"); 
    } 
, 4000); 
+0

現在正在工作。但是當第一次加載頁面時,幻燈片需要更長的時間才能更改。 – 2014-09-27 15:18:39

+0

這是因爲文件加載時間... – 2014-09-27 15:19:40

+0

@RajatPaul如果這與您以前的問題有關:http://stackoverflow.com/q/26075248/1905949,我想你需要改變'$(「。slider li:第一個「)'到'$(」。slider li:nth-​​child(2)「)' – ekad 2014-09-27 15:28:44

相關問題