How to make this jQuery animation code loop forever?

前端 未结 3 972
清歌不尽
清歌不尽 2021-01-06 04:18

i am trying to create a loop of text animations over a slider... i tried loop but it didnt work.. Can you please tell me how do i loop this script forever..thanks

         


        
相关标签:
3条回答
  • 2021-01-06 04:39

    Create a recursive and self-executing function and use it as the final callback:

    p.s. Took the liberty to clean up your code.

    $(function () {
        (function repeat() {
            var header = $("#header"),
                headerOne = 'I',
                headerTwo = 'Am',
                headerThree = 'So',
                headerFour = 'Cool';
    
            header.text(headerOne)
                .fadeIn(1000)
                .delay(1000)
                .fadeOut(1000, function () {
                header.text(headerTwo)
                    .fadeIn(1000)
                    .delay(1000)
                    .fadeOut(1000, function () {
                    header.text(headerThree)
                        .fadeIn(1000)
                        .delay(1000).fadeOut(1000, function () {
                        header.text(headerFour)
                            .fadeIn(1000)
                            .delay(1000)
                            .fadeOut(1000, repeat);
                    });
                });
            });
        })();
    });
    
    0 讨论(0)
  • 2021-01-06 04:45

    If you clean your code a bit. You can realize that setInterval is not needed. Simply make use of the last callback to repeat the animation.

    $(function () {
        var $header = $("#header");
        var header = ['I', 'Am', 'So', 'Cool'];
        var position = -1;
    
        !function loop() {
            position = (position + 1) % header.length;
            $header
                .html(header[position])
                .fadeIn(1000)
                .delay(1000)
                .fadeOut(1000, loop);
        }();
    });
    

    See it here.

    0 讨论(0)
  • 2021-01-06 04:48

    You can use recurence, the last fadeOut will execute repeat function when finish.

    function repeat() {
        $("#header").hide();
        var headerOne='I';
        var headerTwo='Am'; 
        var headerThree='So';
        var headerFour='Cool';
        $("#header").html(headerOne);
        $("#header").fadeIn(1000);
        $('#header').delay(1000).fadeOut(1000,function() {
            $(this).html(headerTwo).fadeIn(1000);
            $('#header').delay(1000).fadeOut(1000,function() {
                $(this).html(headerThree).fadeIn(1000);
                $('#header').delay(1000).fadeOut(1000,function() {
                    $(this).html(headerFour).fadeIn(1000).delay(1000).
                        fadeOut(1000, repeat); 
                });
            });
        });
    }
    
    $(document).ready(function() {
        repeat();
    });
    
    0 讨论(0)
提交回复
热议问题