コードの一部を再利用可能なプラグインに変換しようとしています。多くの場合、Ajax リクエストからの動的オプションで select を埋めています。
私はこのようなものを作成することができました:
$.fn.fillSelect = function fillSelect(options) {
var self = this;
options = $.extend({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Data.asmx/StatusList",
dataType: "json",
async: true,
success: function(data) {
var list = "";
$.each(data.d, function(i) {
list += '<option value='
+ data.d[i].ID + '>'
+ data.d[i].Nazwa
+ '</option>';
});
self.filter("select").each(function() {
$(this).empty();
$(this).append(list);
//use selectmenu
if ($.ui.selectmenu) $(this).selectmenu();
});
}//,
//error: function(result) {
// alert("Error loading data!");
//}
}, options);
$.ajax(options);
return self;
}
この背後にあるアイデアは、1 つの要求で複数の選択を同じデータで複数回満たすことができるようにすることです。
Ajax リクエストにはデフォルトのオプションがありますが、さらにオプションを追加したいと考えています。
例:
クリア - 新しいオプションを既存のものと置き換えるか追加するかを決定します。
また、パラメーターとして渡すことができるいくつかのコールバックを関数に追加したいと思います。たとえば、サーバー要求が失敗した場合、このエラーが発生した後に呼び出される関数を指定したいと思います。たとえば、アラートを表示したり、選択を無効にしたりします。
私の質問は、プラグインをどのように変更すればよいか、またはどのパターン (ボイラープレート) を使用する必要があるかということです。
私が見つけた定型文はすべて、選択したアイテム内に「とどまる」プラグインを作成するためのもので、後でそのプラグインのメソッドを呼び出すことができます。
ユーザーが選択内容を入力できるようにするシンプルなプラグインが必要です。その後、それは人生を終わらせます:)
私の主なアイデアは、すべての要素に対してサーバーへのリクエストを 1 つだけ行うことです。
ここに jsfiddle デモがあります: http://jsfiddle.net/JC7vX/2/