听起来很简单。
我有这个在加载页面时运行的函数:
function initializeSelect($select, uri, adapt){
$.getJSON( uri, function( data ) {
$select.empty().append($('<option>'));
$.each(data, function(index, item) {
var model = adapt(item);
var $option = $('<option>');
$option.get(0).selected = model.selected;
$option.attr('value', model.value)
.text(model.text)
.appendTo($select);
});
});
});
这里调用它并为下拉选择生成OPTIONS:
initializeSelect($('#commoditySelect'), 'api/sel_keyCommodities.php', function (item) {
return {
value: item.KEY_COMMODITY,
text: item.KEY_COMMODITY
}
});
我需要能够在模式窗口关闭时刷新下拉选项而不刷新页面:
$('#messageModal').on('hidden.bs.modal', function()
{
// I tried this to no avail
initializeSelect();
});
这样,下拉选择将重新运行,可能会有一个新的选择,可能已添加或未添加。
可以这样做,如果是,怎么做?
答案 0 :(得分:1)
您可以将uri
和adapt
的值存储在<select>
和data(...)
中,并在不带参数的情况下调用initializeSelect
时使用这些值(或者至少没有uri
和adapt
)
function initializeSelect($select, uri, adapt) {
if (typeof uri !== "string") {
uri = select.data("uri");
adapt = select.data("adapt");
} else {
select.data({
"uri": uri,
"adapt": adapt
});
}
$.getJSON(uri, function(data) {
$select.empty().append("<option>");
$.each(data, function(index, item) {
var model = adapt(item);
$("<option>")
.val(model.value)
.text(model.text)
.prop("selected", model.selected)
.appendTo($select);
});
});
}
要“刷新”<select>
,您必须致电initializeSelect()
将所需的<select>
initializeSelect($("commoditySelect"));