2

このセットアップを使用して、jQuery プラグインの外部で変数にアクセスできるようにしています。

(function($){

  $.fn.myplugin = function() {
    return this.each(function() {
      // plugin code here
      console.log($.fn.myplugin.myvar);
    });
  };

  $.fn.myplugin.myvar = { ... };

})(jQuery);

myvarを使用して、プラグインの内外にアクセスできます$.fn.myplugin.myvar。しかし、それは非常に冗長です...プラグイン内の変数に短い名前でアクセスする方法が必要だと思いますthis.myvar. thisその例は、現在の要素を参照しているため機能しません。しかし、変数にもっと簡単にアクセスする別の方法はありますか?

4

3 に答える 3

3

$.fnはjQueryのエイリアスprototypeなので、そのプラグインを変数に保存しない限り、もっと簡単な方法はないと思います。

jQuery.fnはどういう意味ですか?

于 2013-02-24T20:42:16.167 に答える
1

gdoronの答えは最も簡単な解決策です...あなたが考えることができる別のことは、プラグインをオブジェクト指向スタイルで書くことです.

function MyPlugin(element) {
    this.element = element;
}

MyPlugin.prototype.init = function() {
    //plugin code here
}

MyPlugin.myVar = { ... };

$.fn.myplugin = function() {
    return this.each(function() {
        var instance = $(this).data('myplugin');
        if (!instance) {
            var instance = new MyPlugin(this);
            $(this).data('myplugin', instance);
        }
        instance.init.apply(instance, arguments);
    });
}

次に、インスタンスのプロパティまたはメソッドのいずれかにアクセスする必要がある場合は、$('#someElement').data('myplugin');. jQuery UI の仕組みのように、最初のパラメーターをメソッド名にし、その後にメソッド引数を指定することで、同じメソッドを使用可能にすることもできますが、実装が少し複雑になります。興味のある方は、Google の「jQuery ウィジェット パターン」で検索してください。

于 2013-02-24T20:56:03.257 に答える
0

関数を定義するときに変数を割り当てる方が簡単だと思います(demo):

var myplugin;
(function($){

  myplugin = $.fn.myplugin = function() {
    return this.each(function() {
      // plugin code here
      console.log(myplugin.myvar);
    });
  };

  myplugin.myvar = { test: true };

})(jQuery);
于 2013-02-24T20:57:16.933 に答える