Sort Options in a Select List with javascript/jQuery.. but not alphabetically

前端 未结 4 876
猫巷女王i
猫巷女王i 2021-02-05 10:23

I am looking for a function that will take a list of options in a select list and sort them alphabetically but with a twist. All values with the text \'NA\' should be pushed to

相关标签:
4条回答
  • 2021-02-05 10:34

    If you have more than one select in the page (multiple selects) use this:

    function NASort(a, b) {
        if (a.innerHTML == 'NA') {
            return 1;
        }
        else if (b.innerHTML == 'NA') {
            return -1;
        }
        return (a.innerHTML > b.innerHTML) ? 1 : -1;
    };
    
    $('select').each(function( index ) {
        $(this).find('option').sort(NASort).appendTo($(this));
    });
    
    0 讨论(0)
  • 2021-02-05 10:46

    demo: http://jsfiddle.net/4bvVz/

    function NASort(a, b) {    
        if (a.innerHTML == 'NA') {
            return 1;   
        }
        else if (b.innerHTML == 'NA') {
            return -1;   
        }       
        return (a.innerHTML > b.innerHTML) ? 1 : -1;
    };
    
    $('select option').sort(NASort).appendTo('select');
    
    0 讨论(0)
  • 2021-02-05 10:53

    I've made ​​some changes to the original function and it worked fine.

    function NASort(a, b) {  
        console.log(a.innerHTML.substr(0, 1).toLowerCase() + ' > ' + b.innerHTML.substr(0, 1).toLowerCase());
        return (a.innerHTML.substr(0, 1).toLowerCase() > b.innerHTML.substr(0, 1).toLowerCase()) ? 1 : -1;
    };
    
    $('select option').sort(NASort).appendTo('select');
    
    0 讨论(0)
  • 2021-02-05 10:57
    var sb = $('select');
    
    sb.append(sb.find('option').sort(function(a, b){
        return (
            a = $(a).text(),
            b = $(b).text(),
            a == 'NA' ? 1 : b == 'NA' ? -1 : 0|a > b
        );
    }));
    
    0 讨论(0)
提交回复
热议问题