2016-04-26 98 views
-2

您好,我需要列出要排序的国家/地区列表,以便法国始终位于列表的顶部。使用JS/Jquery对列表中的国家进行排序

以下是该列表的输入顺序。

<select id="countriesList" name="countriesListName"> 
    <option value="US">USA</option> 
    <option value="DE">Germany</option> 
    <option value="FR">France</option> 
    <option value="DM">Denmark</option> 
    <option value="">Choose Countries</option> 
</select> 
+0

呀其动态。 –

+2

你想如何分类? Denkmark如果按字母顺序升序,或者如果升序降序,不应该排在最前面? –

+0

check [demo](https://jsfiddle.net/guradio/tw7j2rfj/) – guradio

回答

4
  1. 我的选项
  2. 排序我谨法国顶端
  3. 我动“选择Coumtries”顶部(也许不是必要的,因为它的值是空的)
  4. 我选择“选择Coumtries” //你可以选择FR这里

$(function() { 
 
    var $list = $("#countriesList"), $opts = $("option",$list); 
 
    $opts.sort(function(a, b) { 
 
    a = $(a).val(); 
 
    b = $(b).val(); 
 
    if (a > b) return 1; 
 
    if (a < b) return -1; 
 
    return 0; 
 
    }); 
 
    $list.html($opts); 
 
    // insertBefore or prepend 
 
    $('option[value = "FR"]', $list).insertBefore($("option", $list).first()); 
 
    $('option[value = ""]', $list).insertBefore($("option", $list).first()); 
 
    $list.get(0).selectedIndex=0; // or 1 to select France 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<select id="countriesList" name="countriesListName"> 
 
    <option value="US">USA</option> 
 
    <option value="DE">Germany</option> 
 
    <option value="FR">France</option> 
 
    <option value="DM">Denmark</option> 
 
    <option value="">Choose Countries</option> 
 
</select>

+0

我认为需要解释? – guradio

+0

有经验的配偶是。但对于OP我认为它不是:),但你做了解释,所以我认为OP现在会很好:) – guradio

+0

你可以使用'prependTo($ list)'通过'insertBefore()'与附加选择器,但答案很好。 –

0

完整的解决方案:

$(function() { 
 

 
    var options = $('#countriesList option'); 
 

 
    options.sort(function(a, b) { 
 

 
    if (a.value > b.value) { 
 

 
     return 1; 
 
    } 
 
    else if (a.value < b.value) { 
 

 
     return -1; 
 
    } 
 
    else { 
 

 
     return 0; 
 
    } 
 
    }) 
 

 
    $("#countriesList").empty().append(options); 
 

 
    // Vive la France! 
 

 
    $('#countriesList option[value="FR"]').insertAfter($('#countriesList option:first')); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="countriesList" name="countriesListName"> 
 
    <option value="US">USA</option> 
 
    <option value="DE">Germany</option> 
 
    <option value="AZ">Azerbaijan</option> 
 
    <option value="FR">France</option> 
 
    <option value="DM">Denmark</option> 
 
    <option value="">Choose Countries</option> 
 
</select>

前:

enter image description here

后:

enter image description here

Demo at sfiddle.net

+0

为什么不使用snippet编辑器? – mplungjan

0
function myFunction(country) { 
    var select = document.getElementById("selectFrance"); 
    var opts = select.options.length; 
    if ((select.options[1].value !== "FR")){ 
     for (var i=0; i<opts; i++){ 
      if (select.options[i].value == "FR"){ 
       select.insertBefore(select[i],select[1]); 
       break; 
      } 
     } 
    } 
}