過去にかなりのjQueryプラグインを作成しましたが、この問題は数回発生しました。通常は、クロージャの外側にグローバル変数を作成し、それを1日と呼びます。今回私はそれを行う正しい方法が何であるか把握しようとしています。jqueryプラグインで要素を1回作成する
だからここで取り上げる。私は私のベースは、このようなセットアッププラグインがあります:私はどこでも1から実行することができthis.eachセレクタリターンとしてクラスを使用しておりますので
$('.class').nameOfPlugin({foo:'bar'});
:
(function($) {
$.fn.nameOfPlugin = function(options) {
var defaults = {
foo: 'foo'
}
var opts = $.extend(defaults, options);
return this.each(function(){
//if first time through call create
});
};
function create() {
//create stuff here only once
$('body').append("<div id='plugin_overlay'></div>");
};
})(jQuery);
と明らかにし、私はこのようにそれをinitateう〜50回。セレクタごとに1回だけcreateメソッドを実行する最善の方法は何ですか?
この状況では、私は単に
$('#plugin_overlay').length > 0
をチェックできますが、セレクタに基づいて固有のIDにタイムスタンプを追加します。
私はできることにいくつかのアイデアを持っています。私はこれを行うための最善の方法を考えています。
私は通常、それは '.dataのに添付する()'要素のが、その後のことを確認してください。それに欠点があるかどうかは分かりませんが、いつもかなり簡単です。 – Robert
オブジェクトに変数を追加し、create(create関数自体ではなくプラグインにグローバル)によって生成された新しいオブジェクトを格納します。次に、必要なときに、その変数を再参照します(または、初期化されていないときに作成します)。 [私が誤解していない限り] –
@robertええ、私もそれをやっています。そしてええ、私はそれを試してみましょう – locrizak