2013-07-27 40 views
1

我想按選擇框中的值排序選項。通過使用下面的代碼排序很好。但是我有選項值null,它會進入底部應該在頂部。按價值排序選項使用jquery

$(this).html($("option", $(this)).sort(function(a, b) { 
    var arel = parseInt($(a).attr('value'), 10); 
    var brel = parseInt($(b).attr('value'), 10); 
    return arel == brel ? 0 : arel < brel ? -1 : 1 
})); 

來源:Sorting Select box with jQuery

實際結果:

<select name="option[285]"> 
<option value="298">Blazing Yellow</option> 
<option value="299">Jet Black</option> 
<option value="300">Tabacco Brown</option> 
<option value="301">Optical White</option> 
<option value="302">Fiery Red </option> 
<option value="" selected="selected"> --- Please Select --- </option> 
</select> 

預期結果:

<select name="option[285]"> 
<option value="" selected="selected"> --- Please Select --- </option> 
<option value="298">Blazing Yellow</option> 
<option value="299">Jet Black</option> 
<option value="300">Tabacco Brown</option> 
<option value="301">Optical White</option> 
<option value="302">Fiery Red </option> 
</select> 

回答

3

這個問題似乎是parseInt('')給出NaN其使用進行比較時arel < brel給出錯誤回覆SULT

$(this).html($("option", $(this)).sort(function(a, b) { 
    var arel = parseInt($(a).attr('value'), 10) || 0; 
    var brel = parseInt($(b).attr('value'), 10)|| 0; 
    return arel == brel ? 0 : arel < brel ? -1 : 1 
})); 

演示:Fiddle

+0

是。它工作感謝。 – Parthi04