我正在尝试将我的一些代码转换为可重用的插件。很多时候,我使用来自 Ajax 请求的动态选项填充选择。
我设法创造了这样的东西:
$.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 请求的默认选项,但我想为其添加更多选项。
例如:
clear - fill 确定我是否想要新选项来替换现有选项或追加。
此外,我想向我的函数添加一些回调,我可以将它们作为参数传递。如果例如服务器请求将失败,我想指定一个在此错误发生后将调用的函数 - 例如显示警报或禁用我的选择。
我的问题是我应该如何更改我的插件或我应该使用哪种模式(样板)?
我发现的每个样板都是用于创建将“留在”选定项目内的插件,以便以后可以调用该插件的方法。
我需要一个简单的插件,允许用户填写选择,然后它会结束它的生命:)
我的主要想法是对所有元素只向服务器发出一个请求。
这是 jsfiddle 演示:http: //jsfiddle.net/JC7vX/2/