2017-05-16 6 views
0

私はカスタムjQueryプラグインを開発中です。私は2番目の関数内の最初の関数で渡されたオプションにアクセスする必要があります。jQueryカスタムプラグイン内で変数を定義する方法

問題は、これらの機能以外の設定を宣言すると、このプラグインの複数のインスタンスが同じページで初期化されていると混乱します。

(function($) { 

    $.fn.MyCombobox = function(options) { 
     var settings = $.extend({ 
      selector: '.myselector' 
     }, options); 
    }; 

    $.fn.MyCombobox.clear = function() { 
     $(settings.selector).find('input').val(''); 
    }; 

}(jQuery)); 
+0

.data()を設定するだろうか? – guest271314

+0

変数 'settings'を何かに割り当てることを試みることがありますか?今は関数の中の単なるvarであり、その関数の外の参照を取得する方法はありません。 – gforce301

+0

私はプラグインを使用しているどのページでもclear関数を使います。そこで、私はプラグインを次のように初期化します: '$( '#mydiv')。MyCombobox({selector: '.myinput'});'ボタンをクリックすると入力をクリアすると言うイベントリスナーを追加できます。 '$( '#mydiv')。MyCombobox.clear()'プラグインはもっとたくさんありますが、それだけではありませんが、ここで簡単に質問したいと思います。 – Mike

答えて

2

一つのアプローチは、方法が使用されているどのように.MyCombobox

(function($) { 
 

 
    $.fn.MyCombobox = function(options) { 
 
     var settings = $.extend({ 
 
      selector: '.myselector' 
 
     }, options); 
 
     this.data("options", settings); 
 
     return this 
 
    }; 
 

 
    $.fn.clear = function() { 
 
     console.log(this.data("options") || {/* default settings here */}) 
 
    }; 
 

 
}(jQuery)); 
 

 
$("div").MyCombobox().clear();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div></div>

関連する問題