プロジェクトで複数回呼び出す関数があります。
function fillSelect(select) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Data.asmx/Status",
dataType: "json",
async: true,
success: function(data) {
$.each(data.d, function(i) {
select.append('<option value=' + data.d[i].value + '>' + data.d[i].name + '</option>');
});
},
error: function(result) {
alert("Error occured. Contact admin");
}
});
}
次に、私のコードでは、次のように使用しています。
fillSelect($('select#status1'));
fillSelect($('select#status2'));
fillSelect($('select#status3'));
私がやりたいのは、関数をプラグインに変換することです。そのため、次のように呼び出すことができます。
$('select#status1, select#status2, select#status3').fillSelect();
http://starter.pixelgraphics.us/を使用して、空のスキーマを生成しました。
(function($) {
$.ajaxSelect = function(el, select, 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("ajaxSelect", base);
base.init = function() {
base.select = select;
base.options = $.extend({}, $.ajaxSelect.defaultOptions, options);
// Put your initialization code here
};
// Sample Function, Uncomment to use
// base.functionName = function(paramaters){
//
// };
// Run initializer
base.init();
};
$.ajaxSelect.defaultOptions = {
clear: false //append to select or replace current items
};
$.fn.ajaxSelect = function(select, options) {
return this.each(function() {
(new $.ajaxSelect(this, select, options));
});
};
})(jQuery);
しかし、私はそれを埋める方法がわかりません。
私がやりたいのは、サーバーを呼び出してから、パラメーターに入力した数の選択項目を入力することです。
そのような小さなプラグインには、そのすべてのコードが本当に必要ですか?
この機能を備えたプラグインがおそらくいくつかあることは知っていますが、もう少し学ぶために、独自のプラグインを作成したいと思います:)