如何使用fadeLoop暂停和恢复?

时间:2013-02-05 17:18:04

标签: javascript jquery loops fade

我有一个节目和隐藏div淡入淡出循环我正在使用像一个简短的交互式教程与提示。我可以让div按顺序循环;但是,我想在每个提示中添加一个暂停按钮,暂停循环,并能够恢复。如何将该功能添加到我的脚本中?

这是我的js:

$(document).ready(function(){
fadeLoop()
function fadeLoop() {

    var counter = 0,
        divs = $('.fader').css('visibility','visible').hide(),
        dur = 100;

    function showDiv() {
        $("div.fader").fadeOut(dur) // hide all divs
            .filter(function(index) {
                return index == counter % divs.length;
            }) // figure out correct div to show
            .delay(dur) // delay until fadeout is finished
            .fadeIn(dur); // and show it
        counter++;
    }; // function to loop through divs and show correct div
    showDiv(); // show first div    
    return setInterval(function() {
        showDiv(); // show next div
    }, 4 * 1000); // do this every 4 seconds    
};

$(function() {
    var interval;

    $("#start").click(function() {
        if (interval == undefined){
            interval = fadeLoop();
            $(this).val("Stop");
        }
        else{
            clearInterval(interval);
            $(this).val("Start");
            interval = undefined;
        }
    });
});
});

这是我的小提琴:Updated Fiddle

1 个答案:

答案 0 :(得分:1)

我已使用全局变量window.i作为计数器

解决了问题
function fadeLoop() {

    var divs = $('.fader').hide(),
        dur = 200;

    function showDiv() {
        divs.fadeOut(dur) // hide all divs
            .filter(function(index) {
                return index == window.i % divs.length;
            }) // figure out correct div to show
            .delay(dur) // delay until fadeout is finished
            .fadeIn(dur); // and show it
        window.i++;
    }; // function to loop through divs and show correct div
    showDiv(); // show first div    
    return setInterval(function() {
        showDiv(); // show next div
    }, 1 * 1000); // do this every 5 seconds    
};

$(function() {
    var interval;
    window.i = 0;

    $("#start").click(function() {
        if (interval == undefined){
            interval = fadeLoop();
            $(this).val("Stop");
        }
        else{
            clearInterval(interval);
            $(this).val("Start");
            interval = undefined;
        }
    });
});