6

セレクターを必要としない jQuery プラグインに取り組んでいるので、それをグローバル jQuery 名前空間に追加するだけです。

プラグインのパブリック メソッド間で内部インスタンス変数を共有する際に問題が発生しています。たとえば、.init メソッドから $.MyPlugin.settings にアクセスできるようにしたいと考えています。

プラグインコードは次のとおりです。

(function($) {
    $.MyPlugin = function(options) {

        var defaults = {
            username: '',
            password: ''
        }

        var plugin = this;

        plugin.settings = {};

        plugin.init = function() {
          plugin.settings = $.extend({}, defaults, options);
        }

        plugin.init();
  }

  $.MyPlugin.init = function(callback) {
    console.log(this.settings); // undefined
    callback();
  }


}(jQuery));

main.js には、次のものがあります。

$(document).ready(function() {
  $.MyPlugin({
      username: 'myuser',
      password: 'mypass'
  });

  $.MyPlugin.init(function() {
      console.log('hi');
  });

これは以下を返します:

undefined
hi
4

2 に答える 2