Javascript 按字母顺序排列下拉列表,然后按特定前缀排列

Javascript 按字母顺序排列下拉列表,然后按特定前缀排列,javascript,jquery,Javascript,Jquery,我需要按字母顺序对下拉列表进行排序,然后按前缀进行排序 我想排序的前缀是“b:”,所以任何以“b:”开头的都应该在底部 <select id="dropdown"> <option value="1">a</option> <option value="2">b</option> <option value="3">c</option> <option value="4">b: opt

我需要按字母顺序对下拉列表进行排序,然后按前缀进行排序

我想排序的前缀是“b:”,所以任何以“b:”开头的都应该在底部

<select id="dropdown">
  <option value="1">a</option>
  <option value="2">b</option>
  <option value="3">c</option>
  <option value="4">b: option 1</option>
  <option value="5">b: option 2</option>  
  <option value="6">c</option>
</select>

A.
B
C
b:备选方案1
b:备选方案2
C
这是期望的最终结果:

<select id="dropdown">
  <option value="1">a</option>
  <option value="2">b</option>
  <option value="3">c</option>
  <option value="6">c</option>
  <option value="4">b: option 1</option>
  <option value="5">b: option 2</option>  
</select>

A.
B
C
C
b:备选方案1
b:备选方案2
我使用以下JavaScript代码按字母顺序排序:

  $("#dropdown option").sort(function(a,b) { 
    var at = $(a).text();
    var bt = $(b).text();         
    return (at > bt)?1:((at < bt)?-1:0);        
  }).appendTo("#dropdown");
$(“#下拉选项”).sort(函数(a,b){
var at=$(a.text();
var bt=$(b).text();
返回值(at>bt)?1:((at
这将产生:

<select id="dropdown">
    <option value="1">a</option>
    <option value="2">b</option>
    <option value="4">b: option 1</option>
    <option value="5">b: option 2</option>
    <option value="3">c</option>
    <option value="6">c</option>
</select>

A.
B
b:备选方案1
b:备选方案2
C
C
但我仍然需要将“b:”元素推到下拉列表的底部。我怎样才能做到这一点


这里是链接

您可以为前缀添加另一个检查,并获取检查的增量

at.startsWith(prefix) - bt.startsWith(prefix)
var前缀='b:'
$(“#下拉选项”).sort(函数(a,b){
var at=$(a.text();
var bt=$(b).text();
返回at.startsWith(前缀)-bt.startsWith(前缀)| at>bt | |-(at

A.
B
C
b:备选方案1
b:备选方案2
C

这似乎可以完成任务,但startsWith在较旧的浏览器中不起作用?