1

私はjQuery、特にJavaScriptを初めて使用します。

jQueryプラグインを作成しようとしていますが、コールバックイベントに問題があります。プラグインが少し柔軟になるように、コールバックイベントをさまざまな関数に含めたいと思います。

コードは次のとおりです。

    (function($, undefined){

    var methods = {

        init: function(options){

            var settings = $.extend({

                // Default settings
                'fadeInOutSpeed'            : 100,
                // the rest of default settings ...

                // Callback events
                onOpenBefore        : function(){},
                onOpen              : function(){},
                onOpenedCloseBefore : function(){}
                // the rest of the callback events...

            }, options);

            // code goes here...

            return this.each(function(){

                // code goes here

            });

        },
        destroy: function(){
            // code goes here
        },
        open: function(){
            console.info('method open accessed');
        },
        close: function(){
            console.info('method close accessed');
        },
        update: function(){
            console.info('method update accessed');
        }

    };

    function gui_selectbox_open(param, event){

        // HOW TO PUT A CORRECT CALLBACK CODE HERE ?
        settings.onOpenBefore.call(param, event);

        // function code goes here

        settings.onOpenAfter.call(param, event);
    };

関数内gui_selectbox_open(param,event)には、コールバックイベントを配置したい行が最初にあります。これにより、外部からプラグインを初期化するときに適切にアクセスでき、JavaScriptエラーが発生し、settings.onOpenBefore...定義されていないことがわかります。それを定義する方法は?

前もって感謝します

4

1 に答える 1

1

変数は、オブジェクト内の関数settingsに対してローカルとして定義されています。外部からアクセスできるようにするには、関数の外部で定義して、次のようにアクセスできます。init()methodsinitmethods.settings.yourMethod(..)

すなわち

var methods = {

    settings: null,

    init: function(options){

    ...
于 2012-07-25T11:03:40.320 に答える