协慌网

登录 贡献 社区

使用 jQuery 作为 JS 对象向 select 中添加选项的最佳方法是什么?

使用 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>