javascript - 按顺序需要选项

标签 javascript jquery sorting option

我需要按顺序设置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>

最佳答案

使用减法,这将自动将您的属性值转换为数字。没有此转换,您将按字符串值排序。

建议的改进:代替(默默地)将列表转换为HTML并将其提供给html方法,请使用detach().appendTo(),它不需要进行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>

关于javascript - 按顺序需要选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45505246/

相关文章:

javascript - 未捕获的语法错误 : Unexpected token < on line 1

javascript - 如何阻止用户在node.js中直接访问网页?

javascript - PHP 在 $.ajax 响应中回显清空字符串

java - 使用两个值 x 和 y 对 java 中的数组进行自定义排序

javascript - JS |当并非所有属性都存在时,按属性对对象数组进行排序

algorithm - 需要理解算法的答案

javascript - 如何使用动态日期过滤 oData 调用?

javascript - 通过 HTML 文本框查找某些子字符串,然后用其他字符串替换它们

javascript - Jquery 在单击动态添加的按钮时不调用函数

javascript - 使用 jquery 创建封面?