FadeIn,FadeOut然后对另一个图像做同样的事情

时间:2011-06-25 22:35:02

标签: jquery

我想淡入图像,等待几毫秒和fadeOut图像,我想用少量图像做这个,我也想循环这个。我的想法是为每个循环执行此操作,但它不起作用。我写了这个:

function showDiv() {
    if($('.header_img a:not(:contains(shown))').length) {
        var current = ($('.header_img a:not(:contains(shown)):first'));
        $(current).fadeIn(1500).delay(4000).fadeOut(1500);
        $(current).addClass('shown');
        setTimeout(showDiv, 1000);
    }
}
showDiv();

编辑: 非常感谢所有答案:)但是,我自己做了一些事情:

  $(document).ready(function(){
     var current = ($('.header_img a:first-child'));    
    var counter = 0;
 var n = $(".header_img a").length;
function showDiv(current) {
    if(counter<n-1 )
    {
    counter++;
    $(current).fadeIn(1500).delay(4000).fadeOut(1500, function(){
    current=$(current).next();
    showDiv(current);
    })
}
else{
counter = 0;
$(current).fadeIn(1500).delay(4000).fadeOut(1500, function(){
    current=($('.header_img a:first-child'));   
    showDiv(current);
    })
}

  }
showDiv(current);
  });

......它有效!

2 个答案:

答案 0 :(得分:0)

您可以在动画完成时指定回调:http://api.jquery.com/fadeIn/

答案 1 :(得分:0)

试试这个

var fader = {
    init: function() {
        this.firstLi = jQuery('#images ul li:first').attr('id'); 
        this.lastLi = jQuery('#images ul li:last').attr('id');
    },
    doFade: function() {
        this.currID = jQuery('#images ul').data('currLI');
        this.currLiStr = '#images ul li#' + fader.currID;
        this.nextID = (this.currID == this.lastLi) ? this.firstLi : jQuery(fader.currLiStr).next().attr('id');
        this.nextLiStr = jQuery('#images ul li#' + fader.nextID);
        jQuery(fader.currLiStr).fadeOut(3000);
        jQuery(fader.nextLiStr).fadeIn(2000);
        jQuery('#images ul').data('currLI',fader.nextID);
    }
}

叫做:

var firstLi = jQuery('#images ul li:first').attr('id');
    jQuery('#images ul').data('currLI',firstLi);
    fader.init();
    setInterval('fader.doFade()',10000);
    }