javascript-根据属性值jquery重新排列选择optgroup标签

我的html代码动态地如下所示.但是我想基于属性“ datagroupid”进行排序.

<select id="parts" multiple="multiple" class="parameterdropdown">
<optgroup value="9" label="B3_L1" datagroupid="9">
      <option value="12">A01_Process1_Sub1</option>
      <option value="14">A03_Process3_Sub1 </option>
 </optgroup>
<optgroup value="6" label="A2_L2" datagroupid="6">
      <option value="7">A01_Process1_Sub1</option>
      <option value="9">A03_Process3_Sub1 </option>
</optgroup>
 <optgroup value="3" label="A1_L1" datagroupid="3">
      <option value="3">A01_Process1_Sub1</option>
      <option value="4">A03_Process3_Sub1 </option>
</optgroup>
</select>

我尝试了以下脚本.它不起作用.请帮我.

$("#parts").html($("#parts optgroup").sort(function (a, b) {
     return a.text == b.text ? 0 : a.label < b.label ? -1 : 1  ;
}));  

预期输出如下.

<select id="parts" multiple="multiple" class="parameterdropdown">
 <optgroup value="3" label="A1_L1" datagroupid="3">
      <option value="3">A01_Process1_Sub1</option>
      <option value="4">A03_Process3_Sub1 </option>
</optgroup>
<optgroup value="6" label="A2_L2" datagroupid="6">
      <option value="7">A01_Process1_Sub1</option>
      <option value="9">A03_Process3_Sub1 </option>
</optgroup>
<optgroup value="9" label="B3_L1" datagroupid="9">
      <option value="12">A01_Process1_Sub1</option>
      <option value="14">A03_Process3_Sub1 </option>
 </optgroup>
</select>

解决方法:

您只需要将代码更改为此:https://codepen.io/creativedev/pen/QxmaOG

$("#parts").html($("#parts optgroup").sort(function (a, b) {
     return $(a).attr('datagroupid') == $(b).attr('datagroupid') ? 0 : a.label < b.label ? -1 : 1  ;
}));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。