javascript - 设置超时后jquery运行函数

标签 javascript jquery

我有一个运行良好的动画,但现在我试图通过淡出文本然后运行另一个函数来反转此动画。 加载此页面后,将运行以下...

 $(document).ready(function () {

      dream();
      setTimeout(runul(), 8000, function() {showVideo()});

    });

dream 函数在 body 背景上创建气泡。

 function dream() {
        //calculating random color of dream
        if (animation_stopped) return;
        var color = 'rgb(' + Math.floor(Math.random() * 255) + ',' + Math.floor(Math.random() * 255) + ',' + Math.floor(Math.random() * 255) + ')';

        //calculating random X position
        var x = Math.floor(Math.random() * $(window).width());

        //calculating random Y position
        var y = Math.floor(Math.random() * $(window).height());

        //creating the dream and hide
        drawingpix = $('<span>').attr({ class: 'drawingpix' }).hide();

        //appending it to body
        $(document.body).append(drawingpix);

        //styling dream.. filling colors.. positioning.. showing.. growing..fading
        drawingpix.css({
            'background-color': color,
            'border-radius': '100px',
            '-moz-border-radius': '100px',
            '-webkit-border-radius': '100px',
            top: y - 14,    //offsets
            left: x - 14 //offsets
        }).show().animate({
            height: '500px',
            width: '500px',
            'border-radius': '500px',
            '-moz-border-radius': '500px',
            '-webkit-border-radius': '500px',
            opacity: 0.1,
            top: y - 250,    //offsets
            left: x - 250
        }, 3000).fadeOut(2000);

        //Every dream's end starts a new dream
         window.setTimeout('dream()', 200);
    }

当 dream 函数运行时,我运行 runul() 函数,它开始输入文本。

 function runul() {
        jQuery("#ticker").ticker({
            cursorList: " ",
            rate: 50,
            delay: 18000
        }).trigger("play").trigger("stop");

        // Trigger events
        jQuery(".stop").click(function () {
            jQuery("#ticker").trigger("stop");
            return false;
        });

        jQuery(".play").click(function () {
            jQuery("#ticker").trigger("play");
            return false;
        });

    }

当 runul() 动画完成后,我想运行 showVideo 函数。我希望此函数淡出键入的文本,然后淡入包裹在 div 中的 iframe。

 function showVideo() {
        $('#divFade').fadeOut(3000);
        animation_stopped = true;
        $(typetext).css('color', 'black');
        $("body").animate({ backgroundColor: "#ffffff" }, 3000);
        $('#divVideos').fadeIn('slow');
       // Animation complete.
        $("#iVideos").prop('src', 'Videos/Quick Start Intro_player.html');
        return false;
      };

如何让 showVideo 在 runul() 完成后运行?

非常感谢您的帮助

最佳答案

您应该将“showVideo”作为回调函数传递:

setTimeout( function() {runul(showVideo)},8000);

function runul(callback) {
        jQuery("#ticker").ticker({
            cursorList: " ",
            rate: 50,
            delay: 18000
        }).trigger("play").trigger("stop");

        // Trigger events
        jQuery(".stop").click(function () {
            jQuery("#ticker").trigger("stop");
            return false;
        });

        jQuery(".play").click(function () {
            jQuery("#ticker").trigger("play");
            return false;
        });

        callback();

    }

您还可以使用 jquery defferred具体来说,when功能

关于javascript - 设置超时后jquery运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13363622/

相关文章:

javascript - 主干获取回调的正确方法

javascript - 电子邮件正则表达式 - 排除指定集

javascript - 如何阻止外部JS请求

php - 使用 PHP 表单提交的 POST javascript 变量

javascript - 为什么 jQuery 的加载事件不会在动态插入的脚本元素上触发?

jquery - Ruby On Rails - 样式无法正确呈现

javascript - 单击事件监听器仅在第二次工作

jQuery 查找 float li 中每行的项目数

javascript - 为什么会出现$this is not Defined 错误?

javascript - jquery 响应式菜单