我試圖將我的一些代碼轉換爲可重用的插件。 很多時候我用來自Ajax請求的動態選項填充選擇。jQuery - 創建插件的正確方法
我已經成功地這樣創造的東西:
$.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;
}
這背後的想法是能夠以一個請求,以填補多個選擇具有相同的數據多次。
我有Ajax請求的默認選項,但我想添加一些更多的選項。
例如:
清除 - 如果我想要新的選項替換現有的或追加的填充確定。
另外我想添加一些回調函數,我可以作爲參數傳遞。 例如,如果服務器請求失敗,我想指定一個函數,在發生此錯誤後將調用 - 例如顯示警報或禁用我的選擇。
我的問題是我應該如何改變我的插件或我應該使用哪種模式(模板)?
我發現的每一個樣板文件都是用來創建插件,它們會保留在選定的項目中,以便稍後可以調用該插件的方法。
我需要一個簡單的插件,允許用戶填寫選擇,然後將結束它的生命:)
我主要的想法是做只有一個請求到服務器的所有元素。
這裏的jsfiddle演示:http://jsfiddle.net/JC7vX/2/
感謝您的迴應,但我怎麼能在這裏插入Ajax調用。我的第一個想法是在this.each()中,但是每次調用元素時都會調用Ajax調用。 – Misiu
其他代碼/ jsfiddle會有所幫助,但是您可以針對表單調用插件,然後使用用戶定義的選項將類添加到您希望插件運行的選擇元素。如果不允許客戶端代碼傳遞成功處理程序,那麼將成功處理程序定義爲回調會更好地使插件更具可重用性,可以證明,插件是沒有意義的。 – SigInTheHead
這裏是jsfiddle演示玩:http://jsfiddle.net/JC7vX/2/ – Misiu