使用javascript对下拉列表进行排序?

使用javascript对下拉列表进行排序?,javascript,sorting,drop-down-menu,Javascript,Sorting,Drop Down Menu,我有这个下拉列表,但是选项没有按正确的顺序设置。有没有一种方法可以使用javascript对它们进行排序(我猜是基于它们的值) <select class="required" name="payment_gateway"> <option value="bank-transfer">Bank</option> <option value="pay-social">Social</option> <option value="pa

我有这个下拉列表,但是选项没有按正确的顺序设置。有没有一种方法可以使用javascript对它们进行排序(我猜是基于它们的值)

<select class="required" name="payment_gateway">
<option value="bank-transfer">Bank</option>
<option value="pay-social">Social</option>
<option value="paypal">PayPal</option>
<option value="pronamic_ideal">iDEAL</option>
</select>

银行
社会的
贝宝
理想的
所需的排序是:

<select class="required" name="payment_gateway">
<option value="pay-social">Social</option>
<option value="pronamic_ideal">iDEAL</option>
<option value="bank-transfer">Bank</option>
<option value="paypal">PayPal</option>
</select>

社会的
理想的
银行
贝宝
试着这样写

var $dropdown = $('.required'),
    $items = $dropdown.children('option');


$items.sort(function(a, b){
    var an = a.value,
        bn = b.value;
    if (an > bn) {
        return 1;
    }
    if (an < bn) {
        return -1;
    }
    return 0;
});
$items.detach().appendTo($dropdown);
var$dropdown=$('.required'),
$items=$dropdown.children('option');
$items.sort(函数(a,b){
var an=a.值,
bn=b.值;
如果(an>bn){
返回1;
}
如果(an
这似乎有效,但仍然选择了错误的选项

$('.required option[value="pay-social"]').insertBefore('.required option[value="bank-transfer"]');

这里有一个工作示例

<select class="required" name="payment_gateway"><option value="pay-social">Social</option><option value="pronamic_ideal">iDEAL</option><option value="bank-transfer">Bank</option><option value="paypal">PayPal</option></select>
paypal

我强烈推荐jQuery,如果您不能,请查看第二个答案:实际上,我希望“付费社交”成为第一个选项。您希望在什么条件下订购列表?自定义还是按字母顺序?这里没有足够的信息提供帮助。您当前如何输出选择选项?不清楚您是否可以重新订购HTML。您好,非常感谢您的回复。然而,这并没有改变顺序。一切都一样,但我不知道你的意思。在fiddle示例中,选项已在html中排序。可以通过以下方式进行修复:$(“form.formcustsort.required”).prop(“selectedIndex”,0);