[英]Refresh dropdown selection without page refresh in jQuery
听起来很简单。
我有此功能在页面加载时运行:
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();
});
这样,下拉选择将重新运行,并可能添加或未添加新选择。
可以做到吗?如果可以,怎么做?
您可以存储值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"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.