これがスタックオーバーフローの質問であるかどうかはわかりません。一般的なものなので、許してください。
次のマークアップがあるとしましょう。
<div class="plugin"> ... </div>
<div class="plugin"> ... </div>
<div class="plugin"> ... </div>
そして、jqueryプラグインを実行して、plugin
クラスを持つすべての要素に渡すことはしません。
$(".plugin").myPlugin();
プラグインコードは次のようになります。
;(function ( $, window, undefined ) {
var myPlugin = 'myPlugin',
document = window.document,
defaults = {
propertyName: "value"
};
// The actual plugin constructor
function Plugin( element, options ) {
this.element = element;
this.options = $.extend( {}, defaults, options) ;
this._defaults = defaults;
this._name = myPlugin;
this.init();
}
Plugin.prototype.init = function () {
};
// A really lightweight plugin wrapper around the constructor,
// preventing against multiple instantiations
$.fn[myPlugin] = function ( options ) {
return this.each(function () {
if (!$.data(this, 'plugin_' + myPlugin)) {
$.data(this, 'plugin_' + myPlugin, new Plugin( this, options ));
}
});
}
}(jQuery, window));
このコードを実行すると、クラス名が。の要素ごとにプラグインコンストラクターが呼び出されているように見えますmyPlugin
。divのコレクション全体でプラグインを実行し、コンストラクターを1回だけ呼び出すと思いました。
それで、それはどのように機能しますか?クラスセレクターによって返される要素ごとにプラグインのインスタンスが作成されていますか?