0

私はこのカウントダウンタイマーを持っています

(function($){

    var options = {
        display_as_text     : false,
    remaining : 0,
        separator           : ':',
        significant_days    : 3,
    display_on_complete : null, // id of element to display when countdown is complete
    hide_on_complete : null // hide the timer once it hits zero
    };

    $.fn.countdown = function (config_options)
    {
        /*
         * Initialise
         *
         * Prepare data and trigger regular execution of code
         *
         * @param   container   Reference to DOM element where counter will be displayed
         */
        var initialise = function (container){

        }

        var update = function (seconds_remaining){          

        }

更新にアクセスし、送信した値に基づいて時間をリセットする必要がありますが、アクセス方法がわかりません。これが私がプラグインをインスタンス化する方法です

$('#timer').countdown({remaining : 1000});

しかし、どのように更新を呼び出して秒を更新するのですか...私はそれを変数に設定して呼び出すことを試みましたが、行きません...アイデア

4

2 に答える 2

1

(私が見た) 最も一般的なアプローチは、jQuery-UI スタイルで行うことです。

  1. $(selector).plugin({...})プラグインをバインドし、通常の方法で連鎖できるようにします。
  2. $(selector).plugin('method')methodアクセサーとして呼び出します。
  3. $(selector).plugin('method', arg)method指定された で mutator として呼び出しますarg

したがって、あなたの場合、プラグインに引数解析ロジックを少し追加して、$(selector).countdown('update', 11).

とを使用$.isPlainObjectargumentsて、プラグインがどのように呼び出されたかを把握し、可変長引数リストを引き離すことができます。

$.fn.countdown = function(options) {
    if(!$.isPlainObject(options)) {
        var stdarg = Array.prototype.slice.call(arguments);
        if(stdarg[0] == 'update' && stdarg.length > 1) {
            return this.each(function() {
                // Set up value using stdarg[1]
            });
        }
        // ...
    }

    return this.each(function() {
        // Bind as usual
    });
};

単純なデモ (もちろん、現実はよりクリーンで、よりよく整理されています): http://jsfiddle.net/ambiguous/DEVBD/

于 2012-04-22T19:43:45.563 に答える
0

update残りの秒数を取得するか、プラグイン内で関数を呼び出したいかどうかわかりません。しかしいずれにせよ、完全なソースを見ない限り、これがプラグインに含まれているかどうかを判断することは不可能です。

プラグインスコープ内で次のようなものを使用して、プラグインを操作する場合はいつでもカスタム API をプラグインに追加できます。

$(this).data('countdown', {
    update: update
});

次に、次を使用して呼び出します。

$('#timer').data('countdown').update(12345);

同じアイデアは、残り秒数などの内部変数を取得するために機能しますseconds_remaining

$(this).data('countdown', {
    getSecondsRemaining: function() {
        return seconds_remaining;
    }
});

その後:

$('#timer').data('countdown').getSecondsRemaining();
于 2012-04-22T19:22:57.307 に答える