プラグインを動的に生成する Web サイトを試してみました。サイトはこちらhttp://starter.pixelgraphics.us/
生成されたコードのサンプルを次に示します。
(function($){
$.sample = function(el, options){
// To avoid scope issues, use 'base' instead of 'this'
// to reference this class from internal events and functions.
var base = this;
// Access to jQuery and DOM versions of element
base.$el = $(el);
base.el = el;
// Add a reverse reference to the DOM object
base.$el.data("sample", base);
base.init = function(){
base.options = $.extend({},$.sample.defaultOptions, options);
// Put your initialization code here
};
// Sample Function, Uncomment to use
// base.functionName = function(paramaters){
//
// };
// Run initializer
base.init();
};
$.sample.defaultOptions = {
};
$.fn.sample = function(options){
return this.each(function(){
(new $.sample(this, options));
});
};
})(jQuery);
私が混乱している部分は、$.fn.sample 内のコードです。
コードは jQuery コレクションをループし、$.sample を使用して作成されたオブジェクトを jQuery コレクションの一部である各 DOM オブジェクトにアタッチしますか? その場合、このアプローチを使用するときに問題があります。
ところで、「THIS」オブジェクトのスコープに問題がある可能性があるインスタンスをお願いしたいと思います。「THIS」オブジェクトを変数「base」に割り当てる前のコメントと少し混乱しているためです。
前もって感謝します。
このプラグインがグローバル オブジェクトを作成することに気付きました。たとえば、100 div がある場合、このプラグインを $(div).sample() と呼びます。DOM および DOM の jQuery バージョンにそれぞれ対応する Obj.el や Obj.$el などの属性を持つ 100 個のグローバル オブジェクトを作成します。プラグインの作成にこのアプローチを使用しても問題ありませんか?