2012-05-18 106 views
2

我有以下標記: -JQuery的OPTGROUP字母排序

<select name="List1" id="l1"> 
<option>One</option> 
<option>Two</option> 
<option>Three</option> 
<option>Bob</option> 
<option>Four</option> 
<option>Five</option> 
<option>Alyn</option> 
</select> 

而下面的jQuery: -

$('#l1 option:nth-child(n+5)').wrapAll('<optgroup label="Group 1">'); 

得到四個五和Alyn出現在所謂的第1組

的OPTGROUP

我希望按字母順序對結果進行排序,但在應用optgroup之後。

所以前四個結果應按字母順序排序,optgroup中的最後3個結果應按字母順序排序。

+1

+1有趣的問題 –

回答

2

http://jsfiddle.net/xGENn/16/

$('#sort').click(function() { 

    var $options = $('#l1 option:nth-child(n+5)'); 
    $options.sort(function(a, b) { 
     return $(a).text().localeCompare($(b).text()); 
    }); 
    $options.wrapAll('<optgroup label="Group 1">'); 

    $options = $('#l1').children('option'); 
    $options.sort(function(a, b) { 
     return $(a).text().localeCompare($(b).text()); 
    }); 
    $('#l1').prepend($options).val($("#l1 option:first").val()); 
}); 

​ 
+0

作品,但只適用於OPTGROUP。它需要對optgroup外部的選項進行排序! –

+2

@generalexception你可以在應用'optgroup'之後將相同的邏輯應用於'$('#li select')。children('option')',將其作爲練習:) –

+0

應該'$ options = $('#li select')。children('option');'是'#l1'而不是'#li'? –