1

スプラッシュ スクリーンを作成する jQuery プラグインを作成しました。jQuery の animate 関数を使用し、以下によって初期化および起動されます。

    $('#temperature_splash').splashScreen();

    $('.tempGraphButton').click(function () {

        $('#temperature_splash').splashScreen('splash', 300);

         //Here, I would like to make an ajax request when the animation has finished
    }

プラグインのアニメーションが終了した後に ajax リクエストを行いたいのですが、方法がわかりません。誰か提案はありますか?

プラグインコードの概要

$.fn.splashScreen = function (method) {
    // Method calling logic
    if (methods[method]) {
        return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
    } else if (typeof method === 'object' || !method) {
        return methods.init.apply(this, arguments);
    } else {
        $.error('Method ' + method + ' does not exist');
    }
}

var methods = {
    init: function () {
        //Some initializations
    },

    splash: function (time) {
        //Setting some properties

        splashScreenContent.animate({
            width: width,
            left: leftPos
        }, time).animate({
            height: height,
            top: topPos
        }, time);

        return false;
    }
}

})(jQuery);
4

3 に答える 3

1

コールバックを追加するだけ

var methods = {
    init: function () {
        methods.splash(1000, function() {
            //do something when animation is finished
            methods.ajax();
        });
    },
    splash: function (time, callback) {
        splashScreenContent.animate({
            width: width,
            left: leftPos
        }, time).animate({
            height: height,
            top: topPos
        }, time, function() {
            if (typeof callback==='function') callback.call();
        });

        return false;
    },
    ajax: function() {
        //do ajax stuff
    }
}

これは単なる例です。渡すオプションと、それをプラグインに自分で結び付ける方法を理解する必要があります。

于 2012-08-03T18:29:06.607 に答える
0

これらの呼び出しは非同期であるため、スプラッシュ関数内のコードの前にスプラッシュ関数の後のコードが実行されるため、スプラッシュ コードを閉じる直前に ajax コードを配置できます。

于 2012-08-03T18:44:33.623 に答える
0

jQuery の .done 機能にも関連付けることはできませんか?

methods.done(function(){ do your code here for the ajax })'

于 2012-08-03T18:30:40.720 に答える