javascript 选择按字母顺序排序

标签 javascript html

我正在尝试按字母顺序对选项进行排序

我的 HTML 是

<select id="myOpt">
    <option value="" selected data-default>Select Name</option>
    <option value="3">John Snow</option>
    <option value="34">Arya Stark</option>
    <option value="54">Sansa Stark</option>
    <option value="4">Hound</option>
</select>

js

var options = $("#myOpt option");                           
options.detach().sort(function(a,b) {               
    var at = $(a).text();
    var bt = $(b).text();         
    return (at > bt)?1:((at < bt)?-1:0);            
});
options.appendTo("#myOpt");

它对选项进行了正确排序,但现在它显示的是最后一个选项,而不是选定的选项。我的问题是如何显示选定的选项而不是最后一个选项,并且可以通过其他客户端方法来完成吗?因为对于大列表,它会使页面变慢

最佳答案

试试这个,

var options = $("#myOpt option");  
var selectedVal = '';                         
options.detach().sort(function(a,b) {               
    var at = $(a).text();
    var bt = $(b).text();   
    if($(a).attr('selected') || $(b).attr('selected')){
        selectedVal = $(a).attr('selected') ? $(a).val() : $(b).val();
        return false;    
    }
    return (at > bt)?1:((at < bt)?-1:0);            
});
options.appendTo("#myOpt");
$('#myOpt').val(selectedVal);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="myOpt">
    <option value="" selected data-default>Select Name</option>
    <option value="3">John Snow</option>
    <option value="34">Arya Stark</option>
    <option value="54">Sansa Stark</option>
    <option value="4">Hound</option>
</select>

关于javascript 选择按字母顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55804614/

相关文章:

javascript - AngularJs 总是将最后一个类应用于 body 标签

html - 在 SVG 中绘制 1px 网格的最佳/最短方法

javascript - chrome 控制台中的 L 表示什么?

javascript - Webpack、Sass - 超出最大调用堆栈大小

html - 使用 Angular 工作的 HTML 输入中的 Font Awesome 图标

html - 如何将一组带有链接的图像居中

html - 使导航在较小的屏幕上工作

javascript - 单击按钮刷新页面 div

javascript - 要求未找到 Angular Directive(指令) Controller

javascript - Angular 嵌套 ng-form 导致 $modelValue 未设置