使用javascript/jQuery对选择列表中的选项进行排序..但不是按字母顺序排序

glo*_*rob 17 javascript jquery select

我正在寻找一个函数,它将选择列表中的选项列表,并按字母顺序排序,但有一个扭曲.带有文本"NA"的所有值都应该被推到列表的底部.

所以给出一个清单 -

<select>
    <option value="1">Car</option>
    <option value="2">Bus</option>
    <option value="3">NA</option>
    <option value="4">Bike</option>
    <option value="5">Tractor</option>
    <option value="6">NA</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我们最终应该 -

<select>
    <option value="4">Bike</option>
    <option value="2">Bus</option>
    <option value="1">Car</option>
    <option value="5">Tractor</option>
    <option value="3">NA</option>
    <option value="6">NA</option>
</select>
Run Code Online (Sandbox Code Playgroud)

NA的顺序并不重要.

并且不要问为什么我不能只删除NA(或者为什么会有几个选项使用相同的文本但不同的基础值,因为我也不同意它.

kei*_*kei 45

演示: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');
Run Code Online (Sandbox Code Playgroud)


Mar*_*ahn 16

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
    );
}));
Run Code Online (Sandbox Code Playgroud)