使用javascript/jQuery在选择列表中排序选项.但不是按字母顺序排列的
Sort Options in a Select List with javascript/jQuery.. but not alphabetically
我正在寻找一个函数,将采取一个选择列表中的选项列表,并按字母顺序排序,但有一个转折。所有带有"NA"文本的值都应该被推到列表的底部。
给定一个列表-
<select>
<option value="1">Car</option>
<option value="2">Bus</option>
<option value="3">NA</option>
<option value="4">Bike</option>
<option value="5">Tractor</option>
<option value="6">NA</option>
</select>
我们应该以-
结束<select>
<option value="4">Bike</option>
<option value="2">Bus</option>
<option value="1">Car</option>
<option value="5">Tractor</option>
<option value="3">NA</option>
<option value="6">NA</option>
</select>
NAs的顺序不重要。
不要问为什么我不能直接删除NAs(或者为什么会有几个具有相同文本但不同底层值的选项,因为我也不同意它。
演示:http://jsfiddle.net/4bvVz/
function NASort(a, b) {
if (a.innerHTML == 'NA') {
return 1;
}
else if (b.innerHTML == 'NA') {
return -1;
}
return (a.innerHTML > b.innerHTML) ? 1 : -1;
};
$('select option').sort(NASort).appendTo('select');
var sb = $('select');
sb.append(sb.find('option').sort(function(a, b){
return (
a = $(a).text(),
b = $(b).text(),
a == 'NA' ? 1 : b == 'NA' ? -1 : 0|a > b
);
}));
如果您在页面中有多个选择(多重选择),请使用:
function NASort(a, b) {
if (a.innerHTML == 'NA') {
return 1;
}
else if (b.innerHTML == 'NA') {
return -1;
}
return (a.innerHTML > b.innerHTML) ? 1 : -1;
};
$('select').each(function( index ) {
$(this).find('option').sort(NASort).appendTo($(this));
});
我对原来的函数做了一些改变,它工作得很好。
function NASort(a, b) {
console.log(a.innerHTML.substr(0, 1).toLowerCase() + ' > ' + b.innerHTML.substr(0, 1).toLowerCase());
return (a.innerHTML.substr(0, 1).toLowerCase() > b.innerHTML.substr(0, 1).toLowerCase()) ? 1 : -1;
};
$('select option').sort(NASort).appendTo('select');
相关文章:
- 重新排列HTML元素的顺序并更改内容
- 从数组中删除重复条目,并在javascript中按顺序排列
- Javascript从数组中随机选择并按字母顺序排列
- 如何在php中按元素按字母顺序排列json文件
- 如何根据 js 中每个单词的第 n 个字母按字母顺序排列列表
- Javascript将生日按数组顺序排列
- 列出按字母顺序排列的 javascript 和字母标题
- 按字母顺序排列字符串
- 排列<p>使用jQuery按日期顺序排列的元素
- 确定字符串中的所有字母是否按JavaScript字母顺序排列
- 使用angularjs重新排列文本区域中的文本顺序
- 按数组顺序排列对象
- 按字母顺序排列列表
- 多个 ajax 异步不按顺序排列,需要同步行为
- 按数字顺序排列列表
- JavaScript 按字母顺序排列
- jQuery Rotator是按字母顺序排列的,我怎样才能在我的主页上随机化
- 按字母顺序排列 AngularJS 中对象保留键/值关联的选项
- 重新排列元素顺序响应式设计
- 改变奥蕾莉亚的排列顺序,奇怪的行为