您的代码尝试对 DOM 中的每个选项进行排序,您需要单独对每个选择进行排序。
您可以将代码插入函数并为每个选择使用唯一标识符,这是一个工作示例:
<!doctype html>
<html lang="it">
<meta charset="utf-8" />
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
$(function() {
$('.button').click(function() {
sortSelect('prima');
})
$('.button_2').click(function() {
sortSelect('seconda');
})
function sortSelect( selectId ) {
var options = $('select#'+selectId+' option');
var arr = options.map(function(_, o) {
return {
t: $(o).text(),
v: o.value
};
}).get();
arr.sort(function(o1, o2) {
return o1.t > o2.t ? 1 : o1.t < o2.t ? -1 : 0;
});
options.each(function(i, o) {
console.log(i);
o.value = arr[i].v;
$(o).text(arr[i].t);
});
};
});
</script>
</head>
<body>
<select id="prima">
<option value="uno">uno</option>
<option value="due">due</option>
<option value="tre">tre</option>
</select>
<select id="seconda">
<option value="uno">uno</option>
<option value="due">due</option>
<option value="tre">tre</option>
</select>
<button class="button">Ordina la prima select</button>
<button class="button_2">Ordina la seconda select</button>
</body>