动画|等到第一个动画仍然运行

时间:2012-10-15 11:55:14

标签: jquery animation jquery-animate

我尝试创建自己的幻灯片供个人使用,我遇到了一个问题。

在我的jQuery插件中,我创建了一个操作我的插件的Object。代码的结构如下:

(
    function($)
    {
        $.fn.wplSlider = function(options)
        {
            var slider     =   this;

            var settings    =   $.extend(
                {
                    'animationSpeed'    :   750,
                    'animationEasing'   :   null,
                    'animationAutoStart':   true,
                    'pauseTime'         :   3500
                },
                options
            );

            var methods =   {
                animationRun        :   false,
                totalSlides         :   0,
                init                :   function()
                {
                    // This method initiating the slide show elements
                },
                slidesStatus        :   function()
                {
                    // This method initiating the slides status
                },
                slideNumber         :   function()
                {
                    // Assign a number to each slide
                },
                getSlidesAmount     :   function()
                {
                    // Get the amount of slides
                },
                next                :   function()
                {
                    // Prepare the next slide that will be displayed
                },
                prev                :   function()
                {
                    // Prepare the next slide that will be displayed
                },
                goTo                :   function(item)
                {
                    // Prepare the specified slide
                },
                slideOut            :   function()
                {
                    // Slide out the current slide
                    slider.find('li[data-status="current"] .container').animate(
                        {
                            top :   '-75px'
                        },
                        600
                    );

                    slider.find('li[data-status="current"] span, li[data-status="current"] a').animate(
                        {
                            opacity :   0
                        },
                        600
                    );
                },
                slideIn             :   function()
                {
                    // Slide in the current slide
                    $('li[data-status="current"]').animate(
                        {
                            'opacity'   :   1
                        },
                        650
                    );
                }
            }

            /* Allow chainability */
            return this.each(
                function()
                {
                    methods.init();
                    methods.slideOut();
                    methods.next();
                    methods.slideIn();
                }
            );
        }
    }
)(jQuery);

使用上面的代码,问题在于,当我执行slideOut / next / slideIn时,步骤非常快。

更具体地说,slideIn()与slideOut()同时执行。

有没有办法让slideO()在slideOut()完成后才能执行?

1 个答案:

答案 0 :(得分:2)

  

有没有办法让slideIn()只在执行后才能执行   slideOut()完成了吗?

是的,您可以使用以下代码。

下面的代码将允许您运行slideIn()函数将在执行slideOut()函数时执行。

$.when(methods.slideOut())
  .then(methods.slideIn());

Read more