2014-04-15 29 views
0

當用戶點擊一個按鈕時,我使用jquery將額外的流派加載到HTML下拉菜單中。我想要按照選項文本的字母順序排序,而不是數值。如何通過選項文本排序HTML下拉菜單,而不是值?

我的PHP類型數組類似

$genres = array (0=>"All", 200=>"Pop", 201=>"Classic Rock", ...etc 

關鍵數字加載在下拉值,而文本填充選項。

而且我的jQuery

$.each(json, function(val, text) 
{     
    options[options.length] = new Option(text,val); 
}); 

顯示在下拉

All 
Pop 
Classic Rock 

即不按字母順序

我的第一個計劃是在PHP中的數組進行排序,但測試,即使該陣列是

$genres = array (0=>"All", 201=>"Classic Rock", 200=>"Pop", ...etc 

下拉仍顯示

All 
Pop 
Classic Rock 

如何迫使它它訂購它接收到的JSON的順序?

感謝您的幫助。

+0

你可以添加一個你的json的例子嗎? –

回答

1

嘗試像,

$(function(){ 
    var options = $("#select-box-id option"); 
    options.sort(function(a,b) { 
     if (a.text > b.text) return 1; // .text for text comparison 
     else if (a.text < b.text) return -1; 
     else return 0 
    }); 
    $("#select-box-id").html(options); 
}); 

Live Demo

+0

我會試試Rohan。乾杯。 – Shaun

+0

我忘了提及你的代碼非常棒Rohan - 歡呼隊友! – Shaun

1

如果排序是在服務器端完成(或者讓我覺得)這將是更好的。

PHP有一對夫婦,讓您排序基於KEY方法 - (ksort)value - (asort)

你可以這樣對你的數組: -

$genres = array (0=>"All", 200=>"Pop", 201=>"Classic Rock", ...etc 
$stortedgeneres=$genres; 
asort($stortedgeneres); 

然後你就可以用你的JavaScript這個數組($ sortedgeneres)像以前一樣循環。

參考文獻: - http://www.w3schools.com/php/php_arrays_sort.asp

+0

謝謝。這也是我的想法,但即使在服務器端的選項文本中進行排序,jquery似乎也會根據關鍵值構建下拉列表。 – Shaun

相關問題