使用 jQuery 从 JavaScript 对象向<select>
添加选项的最佳方法是什么?
我正在寻找一些我不需要插件的东西,但我也会对那些插件感兴趣。
这就是我做的:
selectValues = { "1": "test 1", "2": "test 2" };
for (key in selectValues) {
if (typeof (selectValues[key] == 'string') {
$('#mySelect').append('<option value="' + key + '">' + selectValues[key] + '</option>');
}
}
简洁明了的解决方案:
这是matdumsa 的清理和简化版本 :
$.each(selectValues, function(key, value) {
$('#mySelect')
.append($('<option>', { value : key })
.text(value));
});
来自 matdumsa 的更改:(1)删除了 append()中选项的 close 标记,(2)将属性 / 属性移动到 map 中作为 append()的第二个参数。
与其他答案一样,以 jQuery 方式:
$.each(selectValues, function(key, value) {
$('#mySelect')
.append($("<option></option>")
.attr("value",key)
.text(value));
});
var output = [];
$.each(selectValues, function(key, value)
{
output.push('<option value="'+ key +'">'+ value +'</option>');
});
$('#mySelect').html(output.join(''));
通过这种方式,您只能 “触摸 DOM” 一次。
我不确定最新的行是否可以转换为 $('#mySelect')。html(output.join(''))因为我不知道 jQuery 内部(也许它在 html()中进行了一些解析方法)
这稍微快一点。
var selectValues = {
"1": "test 1",
"2": "test 2"
};
var $mySelect = $('#mySelect');
//
$.each(selectValues, function(key, value) {
var $option = $("<option/>", {
value: key,
text: value
});
$mySelect.append($option);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="mySelect"></select>