2017-08-04 17 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>