1

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

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

(
    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() 同时执行。

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

4

1 回答 1

2

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

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

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

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

阅读更多

于 2012-10-15T12:01:42.167 回答