jquery - 使用 jquery 将 jSON 格式分组选择框

标签 jquery json

我正在尝试将 jSON 格式转换为 HTML 格式的组选择框,如下所示:

 <option disabled selected value="">Computer Parts</option>
 <optgroup label="RAM">
   <option value="KING">Kingston</option>
   <option value="CORS">Corsair</option>
 </optgroup>
 <optgroup label="PSU">
   <option value="CM">Cooler Master</option>
   <option value="SEAS">Seasonic</option>
 </optgroup>

我的 JSON 格式如下:

[{
  "COM_DESC": "RAM",
  "ITEM_DESC": [{
    "$id": "1",
    "COM_CODE": "R",
    "COM_DESC": "RAM",
    "ITEM_CODE": "KING",
    "ITEM_DESC": "Kingston"
  }, {
    "$id": "2",
    "COM_CODE": "R",
    "COM_DESC": "RAM",
    "ITEM_CODE": "CORS",
    "ITEM_DESC": "Corsair"
  }]
}, {
  "COM_DESC": "PSU",
  "ITEM_DESC": [{
    "$id": "1",
    "COM_CODE": "P",
    "COM_DESC": "PSU",
    "ITEM_CODE": "CM",
    "ITEM_DESC": "Cooler Master"
  }, {
    "$id": "2",
    "COM_CODE": "P",
    "COM_DESC": "PSU",
    "ITEM_CODE": "SEAS",
    "ITEM_DESC": "Seasonic"
  }]
}]

我现在的代码如下,但这不适用于分组,而只是一个没有分组的一级选择框:

var jsonResult;
$.get("jSON_PCPARTS.php", function(data){
    jsonResult = data;

    $('#com_parts').attr('enabled', 'true');

    $.each(data, function() {
        $('#com_parts').append(
            $("<option></option>").text(this.ITEM_DESC).val(this.ITEM_CODE)
        );
    });
}, "json");

最佳答案

这里有一个选项:-

$.each(data, function() {

  var optgroup = $("<optgroup/>", { label:this.COM_DESC });

  $.each(this.ITEM_DESC, function() {

    optgroup.append($("<option/>").text(this.ITEM_DESC).val(this.ITEM_CODE));

  });

  $('#com_parts').append(optgroup);

});

下面的工作片段

var data = [{
  "COM_DESC": "RAM",
  "ITEM_DESC": [{
    "$id": "1",
    "COM_CODE": "R",
    "COM_DESC": "RAM",
    "ITEM_CODE": "KING",
    "ITEM_DESC": "Kingston"
  }, {
    "$id": "2",
    "COM_CODE": "R",
    "COM_DESC": "RAM",
    "ITEM_CODE": "CORS",
    "ITEM_DESC": "Corsair"
  }]
}, {
  "COM_DESC": "PSU",
  "ITEM_DESC": [{
    "$id": "1",
    "COM_CODE": "P",
    "COM_DESC": "PSU",
    "ITEM_CODE": "CM",
    "ITEM_DESC": "Cooler Master"
  }, {
    "$id": "2",
    "COM_CODE": "P",
    "COM_DESC": "PSU",
    "ITEM_CODE": "SEAS",
    "ITEM_DESC": "Seasonic"
  }]
}];

$.each(data, function() {

  var optgroup = $("<optgroup/>", { label:this.COM_DESC });
  
  $.each(this.ITEM_DESC, function() {
  
    optgroup.append($("<option></option>").text(this.ITEM_DESC).val(this.ITEM_CODE));
    
  });
  
  $('#com_parts').append(optgroup);
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="com_parts">
  <option disabled selected value="">Computer Parts</option>
</select>

关于jquery - 使用 jquery 将 jSON 格式分组选择框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35765795/

相关文章:

javascript - 如何选择具有 class 属性且值完全以给定字符串开头的元素(使用 jQuery)?

javascript - 等待 Node 中的回调完成

javascript - jquery图像 slider ?

php - woocommerce 自定义产品页面上的“添加到购物车”按钮和“立即购买”按钮

javascript - 如何将光滑 slider 直接对齐到容器中底部元素的上方?

javascript - 在谷歌图表中显示 json 正文

java - 在外部类java中使用内部类对象

java - 为什么将单个项目字符串解析为 JSONArray 失败

javascript - 拖动时定位 div

jquery - 将背景图像缩放到部分 - bootstrap