在 Optgroup JQUERY 中排序 Select 选项
Sort Select Option In Optgroup JQUERY
我有一个如下所示的 select,我想按字母顺序对这个 select 进行排序。 (Jquery)
<select>
<optgroup label="Potatoes" >
<option value="1" > Value 1 </option>
<option value="3" > Value 3 </option>
<option value="2" > Value 2 </option>
</optgroup>
<optgroup label="Banana" >
<option value="1" > C </option>
<option value="3" > A </option>
<option value="2" > S </option>
</optgroup>
</select>
我只想对选项组中的选项进行排序。我不想对 optgroup 进行排序。
为了拥有:
<select>
<optgroup label="Potatoes" >
<option value="1" > Value 1 </option>
<option value="2" > Value 2 </option>
<option value="3" > Value 3 </option>
</optgroup>
<optgroup label="Banana" >
<option value="3" > A </option>
<option value="1" > C </option>
<option value="2" > S </option>
</optgroup>
</select>
我只找到了一种使用 optgroups 对 select 进行排序的方法...
这可能是您要查找的内容:https://jsfiddle.net/dt3b6fmc/
$(function() {
$('optgroup').each(function() {
var optgroup = this;
$( 'option', this ).sort(function(a,b) {
return $(a).text() > $(b).text();
}).appendTo(optgroup);
});
});
是否满足您的需求?
您可以使用 localCompare 来比较您的选项 html 字符串
还使用函数将选择器结果作为数组使用 toArray()
和.sort()的使用
请参阅下面的片段
$('select optgroup').each(function(index,elmt){
result = $(elmt).find("option").toArray().sort((option1, option2) => option1.innerHTML.localeCompare(option2.innerHTML));
$(result).appendTo(elmt);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<optgroup label="Potatoes" >
<option value="1" > Value 1 </option>
<option value="3" > Value 3 </option>
<option value="2" > Value 2 </option>
</optgroup>
<optgroup label="Banana" >
<option value="1" > C </option>
<option value="3" > A </option>
<option value="2" > S </option>
</optgroup>
</select>
我有一个如下所示的 select,我想按字母顺序对这个 select 进行排序。 (Jquery)
<select>
<optgroup label="Potatoes" >
<option value="1" > Value 1 </option>
<option value="3" > Value 3 </option>
<option value="2" > Value 2 </option>
</optgroup>
<optgroup label="Banana" >
<option value="1" > C </option>
<option value="3" > A </option>
<option value="2" > S </option>
</optgroup>
</select>
我只想对选项组中的选项进行排序。我不想对 optgroup 进行排序。
为了拥有:
<select>
<optgroup label="Potatoes" >
<option value="1" > Value 1 </option>
<option value="2" > Value 2 </option>
<option value="3" > Value 3 </option>
</optgroup>
<optgroup label="Banana" >
<option value="3" > A </option>
<option value="1" > C </option>
<option value="2" > S </option>
</optgroup>
</select>
我只找到了一种使用 optgroups 对 select 进行排序的方法...
这可能是您要查找的内容:https://jsfiddle.net/dt3b6fmc/
$(function() {
$('optgroup').each(function() {
var optgroup = this;
$( 'option', this ).sort(function(a,b) {
return $(a).text() > $(b).text();
}).appendTo(optgroup);
});
});
是否满足您的需求?
您可以使用 localCompare 来比较您的选项 html 字符串
还使用函数将选择器结果作为数组使用 toArray()
和.sort()的使用 请参阅下面的片段
$('select optgroup').each(function(index,elmt){
result = $(elmt).find("option").toArray().sort((option1, option2) => option1.innerHTML.localeCompare(option2.innerHTML));
$(result).appendTo(elmt);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<optgroup label="Potatoes" >
<option value="1" > Value 1 </option>
<option value="3" > Value 3 </option>
<option value="2" > Value 2 </option>
</optgroup>
<optgroup label="Banana" >
<option value="1" > C </option>
<option value="3" > A </option>
<option value="2" > S </option>
</optgroup>
</select>