回到原始div时,jQuery FadeTo不起作用

时间:2013-07-22 22:37:22

标签: javascript jquery css

我认为开发滑块功能是一个有趣的项目,它会以自动间隔从一个div逐渐消失到下一个div。有用!但由于某种原因,当它返回到第一张幻灯片时,淡入淡出的动画只会停止工作,但是当它前进到下一张幻灯片时会恢复工作。只有从动画失败的最后一张到第一张幻灯片切换。它对我没有意义,因为除了索引之外,提前和重启的代码基本相同。

我尝试过z-index,我尝试过将hide / show与FadeTo结合使用,我尝试了三种组合。似乎没有舔这个问题。

我添加了代码输出到控制台以查看出错的地方,我没有看到任何问题。我确信这是微妙而又至关重要的 - 但它仍在继续让我失望。因此,任何见解都是值得赞赏的!

可以在此处看到代码和工作示例:http://jsfiddle.net/cawwM/

这是滑动切换的功能:

    function toggleSlides(slideArray) {
        var currentSlideIndex = 0;
        var slideLength = slideArray.length;
        window.console&&console.log('Slide Toggle interval fired. \n');
        window.console&&console.log('Searching for current slide... \n');
        $.each(slideArray,function(index, value){ 
            if($('#'+value).hasClass('currentSlide') === true) {
                currentSlideIndex = index;
                window.console&&console.log('Current slide identified. \n');
                return (false); // break loop, we have index.
            }
        });
        if(currentSlideIndex < slideLength - 1) {
            // Advance to next slide
            window.console&&console.log('Still more slides ('+currentSlideIndex+' < '+(slideLength - 1)+'). Advancing to next slide now. \n');
            $('#'+slideArray[currentSlideIndex]).removeClass('currentSlide');
            $('#'+slideArray[currentSlideIndex+1]).addClass('currentSlide');
            $('element').css('z-index', 9999);
            $('#'+slideArray[currentSlideIndex+1]).show().fadeTo('slow', 1, function() {
                $('#'+slideArray[currentSlideIndex]).fadeTo(0, 0).hide().css('z-index', 1);
            }).css('z-index', 5);
        } else {
            // Go back to the first slide
            window.console&&console.log('No further slides, going back to first slide now. \n');
            $('#'+slideArray[currentSlideIndex]).removeClass('currentSlide');
            $('#'+slideArray[0]).addClass('currentSlide');
            $('#'+slideArray[0]).show().fadeTo('slow', 1, function() {
                $('#'+slideArray[currentSlideIndex]).fadeTo(0, 0).hide().css('z-index', 1);
            }).css('z-index', 5);
        }
        window.console&&console.log('Done with slide toggling. \n');
    }

再一次,反馈总是受到赞赏!如果你看到我可以改进我的代码的方式,那也值得赞赏 - 我总是热衷于通过学习更好的方法来提高我的技能。

1 个答案:

答案 0 :(得分:1)

问题出在这一行,即Done with slide toggling

之前的一行
$('#'+slideArray[currentSlideIndex]).fadeTo(0, 0).hide().css('z-index', 1);

删除hide()方法并应用slow效果。

$('#'+slideArray[currentSlideIndex]).fadeTo('slow', 0).css('z-index', 1);

删除hide()它不会立即隐藏最后一张幻灯片

FIDDLE