2014-09-27 630 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

相关问题