2017-08-04 16 views
0

我希望序列中的seq屬性可以像下面那樣幫助我。我正在使用此代碼對這些選項進行排序。需要序列中的選項

$("#Grade").html($("#Grade option").sort(function(a, b) { 
 
    return $(a).attr("seq") == $(b).attr("seq") ? 0 : $(a).attr("seq") < $(b).attr("seq") ? -1 : 1 
 
}))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select class="domFilter" id="Grade"> 
 
    <option value="" disabled="" selected="" seq="-18">Select your option</option> 
 
    <option value="253802" seq="1">I</option> 
 
    <option value="253811" seq="10">X</option> 
 
    <option value="253812" seq="11">XI</option> 
 
    <option value="253813" seq="12">XII</option> 
 
    <option value="253803" seq="2">II</option> 
 
    <option value="253804" seq="3">III</option> 
 
    <option value="253805" seq="4">IV</option> 
 
    <option value="253806" seq="5">V</option> 
 
    <option value="253807" seq="6">VI</option> 
 
    <option value="253808" seq="7">VII</option> 
 
    <option value="253809" seq="8">VIII</option> 
 
    <option value="253810" seq="9">IX</option> 
 
</select>

+0

你想添加這表明語言標記? – Yunnosch

回答

0

的問題是,要排序上的繩子不上號,所以你應該parseInt函數獲取序列屬性,你的排序方法之後

$(一).attr ( 「序列」)將返回字符串 「10」

$("#Grade").html($("#Grade option").sort(function (a, b) { 
 
    return $(a).attr("seq") == $(b).attr("seq") ? 0 : parseInt($(a).attr("seq")) < parseInt($(b).attr("seq")) ? -1 : 1 
 
}))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select class="domFilter" id="Grade"> 
 
     <option value="" disabled="" selected="" seq="-18">Select your option</option> 
 
     <option value="253802" seq="1">I</option> 
 
     <option value="253811" seq="10">X</option> 
 
     <option value="253812" seq="11">XI</option> 
 
     <option value="253813" seq="12">XII</option> 
 
     <option value="253807" seq="6">VI</option> 
 
     <option value="253808" seq="7">VII</option> 
 
     <option value="253809" seq="8">VIII</option> 
 
     <option value="253803" seq="2">II</option> 
 
     <option value="253804" seq="3">III</option> 
 
     <option value="253805" seq="4">IV</option> 
 
     <option value="253806" seq="5">V</option> 
 
     <option value="253810" seq="9">IX</option> 
 
</select>

1

使用減法,它會自動將您的屬性值轉換爲數字。沒有這種轉換,你可以按字符串值排序。

建議的改進:使用detach().appendTo(),而不是(默默)將列表轉換爲HTML並將其提供給html方法,而不需要此HTML轉換,但使用HTML元素。有了額外的.parent().val(""),您還可以清除否則將設置爲最後一個元素的選擇。

$("#Grade option").sort(function (a, b) { 
 
    return $(a).attr("seq") - $(b).attr("seq"); 
 
}).detach().appendTo('#Grade').parent().val("");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select class="domFilter" id="Grade"> 
 
     <option value="" disabled="" selected="" seq="-18">Select your option</option> 
 
     <option value="253802" seq="1">I</option> 
 
     <option value="253811" seq="10">X</option> 
 
     <option value="253812" seq="11">XI</option> 
 
     <option value="253813" seq="12">XII</option> 
 
     <option value="253807" seq="6">VI</option> 
 
     <option value="253808" seq="7">VII</option> 
 
     <option value="253809" seq="8">VIII</option> 
 
     <option value="253803" seq="2">II</option> 
 
     <option value="253804" seq="3">III</option> 
 
     <option value="253805" seq="4">IV</option> 
 
     <option value="253806" seq="5">V</option> 
 
     <option value="253810" seq="9">IX</option> 
 
</select>