我有多次調用在我的項目的函數:轉換功能分爲插件
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);
但我不知道如何填寫它。
我想要做的就是打電話給服務器,然後填寫許多選擇的項目,就像我放入參數一樣。
所有這些代碼對於這樣一個小插件來說真的需要嗎?
我知道,有可能是一些插件,這個功能,但我想創建自己的插件,只是爲了學習多一點:)
您希望使用相同的數據填充所有選擇?或者在向服務器發送一個請求時如何過濾每個數據? –
是的,這是正確的,我想填充所有選擇相同的數據。所以我認爲只有一個請求會很好。 – Misiu
對於「選擇」,我會爲選項創建一個字符串,然後只使用一個附加(.html?) - 這種方式只能擊中DOM一次。 –