Javascript中的排序选择选项-基于同一行中的多个值
Sorting Select Option in Javascript - Based on multiple values in same row
我创建了一个这样的列表框,并创建了一个标题栏来帮助排序数据:
ID Name
------------------------------------------------------------
ID1 Identity One
ID2 Identity Two
ID3 Identity Three
ID4 Identity Four
-------------------------------------------------------------
我有一个要求排序上面的列表基于ID,也对名称,意味着当用户单击ID,它应该排序基于ID的列表,反之亦然。但问题是,从数据层我们得到这样一行:
ID1  :Idenitity One
所以我们在options标签中打印相同的内容,并得到如上的输出。生成上述输出的代码是:
<select id="selSort" size="10" style="width:350px" id="rpt">
<option value = "ID1">
ID1 Identity One
</option>
<option value = "ID2">
ID2 Identity Two
</option>
<option value = "ID4">
ID4 Identity Four
</option>
<option value = "ID3">
ID3 Identity Three
</option>
我的问题是我如何实现上述场景的排序工具?是的,我试图排序,但它排序整个列表框,而不是基于单一值。至少现在我能做的是格式化传入的数据,将所有id放在一个数组中,将名称放在另一个数组中,因此对此有任何指导/指针表示赞赏。如果我没有解释清楚,请让我知道
编辑:代码我试图排序一个列表框
function sortSelect(selElem) {
var tmpAry = new Array();
for (var i=0;i<selElem.options.length;i++) {
tmpAry[i] = new Array();
tmpAry[i][0] = selElem.options[i].text;
tmpAry[i][1] = selElem.options[i].value;
}
tmpAry.sort();
while (selElem.options.length > 0) {
selElem.options[0] = null;
}
for (var i=0;i<tmpAry.length;i++) {
var op = new Option(tmpAry[i][0], tmpAry[i][1]);
selElem.options[i] = op;
}
return;
}
您可以使用自定义数组排序看看这个如何根据id对select进行排序?
这里的想法是创建一个数组,并根据其值进行排序,然后根据排序后的值动态创建选项。
自定义排序代码
source.sort(function (x, y) {
if (isAsc)
return y.id - x.id;
else
return x.id - y.id;
});
相关文章:
- 当提供函数名称时,检查函数是否存在于同一作用域中
- 使用Handontable在同一列中用纯文本和html对问题进行排序
- 等效于mRender,基于Jquery Datatables中的底层数据进行排序
- 将 json 数组的一部分分别排序到同一数组的其他部分
- 相对于他在jQuery/Js中的一个内部数据对数组进行排序
- Jquery.Load不适用于android浏览器,但适用于同一设备上的Firefox移动浏览器
- lodash-sortby,如何将数字排序晚于字母
- 如何使页面的一部分始终相对于屏幕处于同一位置
- 回调函数的参数如何依赖于排序
- 随机播放数组,因此没有两个键位于同一位置
- KNOCKOUTJS 不能将绑定多次应用于同一元素
- jQuery UI 可排序函数是否同时适用于多个表
- Date.parse 适用于字符串,但不适用于同一字符串的变量
- KnockoutJs v2.3.0 :“不能多次将绑定应用于同一元素”
- 挖空 + MVC - 不能将绑定多次应用于同一元素
- 平滑滚动仅适用于同一页面,而不适用于外部链接
- 使用jQuery将不同的样式应用于同一元素的各个部分
- 如何将SmartyStreets验证应用于同一页面中的两个表单
- 数组元素相对于字典排序的秩
- 如何在单击时再次将焦点状态应用于同一元素