0

我正在尝试调用两个自定义函数,以便函数 B 必须仅在函数 A 完成其工作后执行。这两个函数都没有 ajax 功能。

我试过,然后,保证它们似乎都不适合我。这是两个函数的片段。

   $.fn.closed = function() {
        alert("animation Finised!");
        $("#home-flipper").show("slide");
        $("#home").css("background-color", "#FBFE7B");
    };

    $.fn.start = function() {
        $("#home").css("background-color", "#212121");
        $("#os-phrases > h2").lettering('words').children("span").lettering().children("span").lettering();
    };

刻字插件

/*global jQuery */
/*! 
 * Lettering.JS 0.6.1
 *
 * Copyright 2010, Dave Rupert http://daverupert.com
 * Released under the WTFPL license 
 * http://sam.zoy.org/wtfpl/
 *
 * Thanks to Paul Irish - http://paulirish.com - for the feedback.
 *
 * Date: Mon Sep 20 17:14:00 2010 -0600
 */
(function($) {
    function injector(t, splitter, klass, after) {
        var a = t.text().split(splitter), inject = '';
        if (a.length) {
            $(a).each(function(i, item) {
                inject += '<span class="' + klass + (i + 1) + ' show_me">' + item + '</span>' + after;
            });
            t.empty().append(inject);
        }
    }

    var methods = {
        init: function() {

            return this.each(function() {
                injector($(this), '', 'char', '');
            });

        },
        words: function() {

            return this.each(function() {
                injector($(this), ' ', 'word', ' ');
            });

        },
        lines: function() {

            return this.each(function() {
                var r = "eefec303079ad17405c889e092e105b0";
                // Because it's hard to split a <br/> tag consistently across browsers,
                // (*ahem* IE *ahem*), we replaces all <br/> instances with an md5 hash 
                // (of the word "split").  If you're trying to use this plugin on that 
                // md5 hash string, it will fail because you're being ridiculous.
                injector($(this).children("br").replaceWith(r).end(), r, 'line', '');
            });

        }
    };

    $.fn.lettering = function(method) {
        // Method calling logic
        if (method && methods[method]) {
            return methods[ method ].apply(this, [].slice.call(arguments, 1));
        } else if (method === 'letters' || !method) {
            return methods.init.apply(this, [].slice.call(arguments, 0)); // always pass an array
        }
        $.error('Method ' + method + ' does not exist on jQuery.lettering');
        return "done";
    };


})(jQuery);

我尝试了以下

$.when($(this).start()).then($(this).closed());

但这不是我面临的问题的答案。请帮我解决它。

4

1 回答 1

0

我终于让它工作了。我不会称它为完美的解决方案,但我需要使用我的这个调整,直到其他人向我推荐更好的方法。

我只是在调用第一个函数后使用了 20 秒超时。

  $(this).start();
    $.doTimeout('closed', 20000, function() {
        $(this).closed();
    });
于 2013-10-22T06:11:51.190 回答