2014-09-13 53 views
-1

Supose我有在同一個頁面的價值屬性排序幾個選擇選項

<select id="select_0_0"> 
    <option value="3">3</option> 
    <option value="1">1</option> 
    <option value="a">a</option> 
</select> 
<select id="select_0_1"> 
    <option value="abc">abc</option> 
    <option value="a">a</option> 
    <option value="1">1</option> 
    <option value="3">3</option> 
    <option value="B">B</option> 
    <option value="2">2</option> 
</select> 
... 
<select id="select_n_m"> 
    <option value="xxx">xxx</option> 
    <option value="zzz">zzz</option> 
    <option value="1">1</option> 
    <option value="3">3</option> 
</select> 

還有更多像這樣的samepage。

我該怎麼樣都使用JavaScript選擇,得到這個:

<select id="select_0_0"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="a">a</option> 
</select> 
<select id="select_0_1"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="a">a</option> 
    <option value="abc">abc</option> 
    <option value="B">B</option> 
</select> 
... 
<select id="select_n_m"> 
    <option value="1">1</option> 
    <option value="3">3</option> 
    <option value="xxx">xxx</option> 
    <option value="zzz">zzz</option> 
</select> 

代碼我想:

$("select").html($("option").sort(function (a, b) { 
return a.text == b.text ? 0 : a.text < b.text ? -1 : 1 
})) 

但它結合了每個都選擇的承滴盤選項中進行選擇。有解決方案嗎? 謝謝你提前

回答

3

你應該通過select元素迭代,然後孩子們進行排序:

$('select').each(function() { 
    $("option", this).sort(function (a, b) { 
     return a.text.localeCompare(b.text); 
    }).appendTo(this); 
}); 

http://jsfiddle.net/ew8f8dak/

+0

經過測試,它的工作! – jechaviz 2014-09-13 07:58:42

0

你給idselect字段,但不要使用它們。使用兩個for循環 - 兩個循環都從0開始,第一個循環直到行數,第二個循環直到行中元素的數量。當每行有相同數量的select時,效果最好。

這樣你可以得到每個select元素的id,並且你可以用這個id來逐個排序每個select

編輯:由於我不熟悉jquery,我無法包含代碼。從那以後我查了一下,你可以用它來選擇一個項目的ID:$("#itemID")

所以,代碼應該是這個樣子(再次,我不熟悉使用jQuery):

for(int i = 0; i < numberOfRows; i++){ 
    for(int j = 0; j < numberOfEelements; j++){ 
     selectID = "select_" + i + "_" + j; 
     $("#selectID").html($("option").sort(function (a, b) { 
      return a.text == b.text ? 0 : a.text < b.text ? -1 : 1 
     })) 
    } 
}