jQuery:如何在执行代码之前等待fadeTo(或任何其他效果)完成

时间:2013-05-27 17:17:13

标签: javascript jquery time wait

我正在制作一个新闻板,让新闻内外消失。当元素淡出时,内容会被删除,当它逐渐消失时,就会有新的内容。 这是有效的,只是时间关闭。仅当旧内容消失时才会出现的新内容会在元素消失时显示。有没有办法等到这个完成?

$(document).ready(function() {
    var counter = 0;
    var slides = ['<p>Track All of Your enemys Using The <span>Scout Tool!</span></p>',
                    '<p>Download powerups Using The <span>Pirate Tool!</span></p>',
                    '<p>Gather Badges To Attack others in <span>Raids!</span></p>',
                    '<p>Enjoy Orgainzing Your Profile <span>Join Now!</span></p>'];

    $('#slide-left').click(function() {
        $('#slide').fadeTo('fast', 0);
        $('#slide p').remove();

        if (counter > 0){counter --;}

        $('#slide').append(slides[counter]);
        $('#slide').fadeTo('fast', 1);
    });
    $('#slide-right').click(function() {
        $('#slide').fadeTo('fast', 0);
        $('#slide p').remove();

        if (counter < (slides.length-1)){counter ++;}

        $('#slide').append(slides[counter]);
        $('#slide').fadeTo('fast', 1);

    });

});

3 个答案:

答案 0 :(得分:4)

fadeTo接受第三个参数,即回调函数。动画完成时调用此方法。所以你总是可以这样做:

$('#slide').fadeTo('fast', 1, function() {

    // This part is executed after fade

});

答案 1 :(得分:1)

你可以做到

$('#slide').fadeTo('fast', 0,function(){
     $('#slide p').remove();
     if (counter > 0){counter --;}
     $('#slide').append(slides[counter]).fadeTo('fast', 1);
});

答案 2 :(得分:-1)

$(document).ready(function() {
    var counter = 0;
    var slides = ['<p>Track All of Your enemys Using The <span>Scout Tool!</span></p>',
                    '<p>Download powerups Using The <span>Pirate Tool!</span></p>',
                    '<p>Gather Badges To Attack others in <span>Raids!</span></p>',
                    '<p>Enjoy Orgainzing Your Profile <span>Join Now!</span></p>'];

    $('#slide-left').click(function() {
        $('#slide').fadeTo('fast', function() {
            $('#slide p').remove();
            if (counter > 0){
                counter --;
            }else{
                if (counter < (slides.length-1)){
                    counter ++;
                }
            }
            $('#slide').append(slides[counter]);
            $('#slide').fadeTo('fast', 1);
        });
    });
});

我不知道这是否正确,但我的5个sents:

希望我有所帮助,