0

これが基本的な質問である場合は申し訳ありませんが、JQuery のプラグインがどのように機能するかについて誤解しているようで、Google はあまり役に立ちません。

私が持っていると想像してください:

methods = {
    init : function(opts){

        options = $.extend(options, opts);

        return this.each(function(){
            data = $(this).data('prodigal');

            if(!data){

                if(options.isActive === false){
                    $(options.tpl.overlay).css({ 'opacity': options.overlay.opacity }).appendTo('body');
                    options.isActive = true;
                }
            }
        });
    }
};

現在options.isActivetrueorのブール値で、オプションをドキュメントの に追加する必要があるfalseかどうかを示します。ドキュメントへの追加が1回だけで機能することを保証しますが、どのように機能するかはわかりません。options.tpl.overlaybodyoptions.tpl.overlay

私が電話するとき:

$('.view_title_images').prodigal();
$('.glglg').prodigal();

まだ1回しか追加されていません。私は常に、プラグインが形成され、あなたが行うすべての「呼び出し」に対して init 関数が呼び出される、つまり関数を一度$('.view_title_images,.glglg').prodigal();形成して呼び出すと信じるようになりました。init

initでは、関数は JQuery プラグインでどのように正確に実行されるのでしょうか?

4

2 に答える 2

0

これがここで起こっていることかどうかはわかりませんが、コールバック関数の内部または外部にあるかどうかにかかわらず、同じオブジェクト$(this)ではないことに注意してください。

于 2012-12-05T12:53:41.247 に答える
0

プラグインは、jQuery プラグイン フレームワーク内で静的オブジェクトとして初めて実行されるときに実際にインスタンス化されるため、この動作が見られます。

したがって、init関数を連続して呼び出すたびに、このグローバル オブジェクトが呼び出されます。optionsオブジェクトは毎回ブール値を変更する静的オブジェクト内のそのオブジェクトへの参照であるため、プラグインへの将来の呼び出しのために実際に保存されます。

于 2012-12-10T11:19:42.667 に答える