0

わかりました、タイトルは少し奇妙に聞こえるかもしれません...

次の問題:

次のようなjquery関数があります。

(function($){
    $.fn.myFunction = function(opts){
        var settings = {
           params: {}
        };
    }

    if ( options ) { 
      $.extend( settings, options );
    }

}

これで、関数は次のように要素に適用されます。

$('#elem').myFunction({'data':'test','data2': 'test2'});

関数の外部から設定プロパティにアクセスするにはどうすればよいですか?

つまり、関数が初期化された後、いくつかの設定を変更したいのですが、方法がわかりません。

何か案は?

(私が書いたことをあまり混乱させないことを願っています:)

4

1 に答える 1

1

変数をより高いレベルのスコープに上げる必要があります。

(function ($) {

    // we expose your variable up here
    var settings = {
    };

    $.fn.myFunction = function (opts) {
        // ...instead of down here
        // do something with settings, like:
        opts = $.extend({}, settings, opts);
    }

    // you can then access a "shared" copy of your variable even here
    if (options) {
        $.extend(settings, options);
    }

})(jQuery);

さらに公開する必要がある場合は、同じ要点に沿って作業する必要があります。

ただし、補足として、呼び出しによって変数$.extend(settings, options)が変更されることに注意してください。元の値settingsを変更せずに同じことを行う良い方法は、空のオブジェクトを呼び出し、例の最初の呼び出しで行ったように戻り値をキャッシュすることです。settings$.extend()$.extend()

var modified_options = $.extend({}, settings, options);
于 2012-08-23T13:25:29.167 に答える