在这里回答了相同的问题:
重新发布:
在搜索了许多解决方案之后,我决定写博客介绍如何在jquery中排序。总而言之,按数据属性对jQuery“类数组”对象进行排序的步骤...
- 通过jQuery选择器选择所有对象
- 转换为实际数组(不是类似于数组的jquery对象)
- 排序对象数组
- 用dom对象数组转换回jquery对象
HTML
<div class =“ item” data-order =“ 2”> 2 </ div>
<div class =“ item” data-order =“ 1”> 1 </ div>
<div class =“ item” data-order =“ 4”> 4 </ div>
<div class =“ item” data-order =“ 3”> 3 </ div>
普通的jQuery选择器
$('.item');
[<div class =“ item” data-order =“ 2”> 2 </ div>,
<div class =“ item” data-order =“ 1”> 1 </ div>,
<div class =“ item” data-order =“ 4”> 4 </ div>,
<div class =“ item” data-order =“ 3”> 3 </ div>
]
让我们按数据顺序对其进行排序
函数getSorted(selector,attrName){
返回$($(selector).toArray()。sort(function(a,b){
var aVal = parseInt(a.getAttribute(attrName)),
bVal = parseInt(b.getAttribute(attrName));
返回aVal-bVal;
}));
}
> getSorted('.item', 'data-order')
[<div class =“ item” data-order =“ 1”> 1 </ div>,
<div class =“ item” data-order =“ 2”> 2 </ div>,
<div class =“ item” data-order =“ 3”> 3 </ div>,
<div class =“ item” data-order =“ 4”> 4 </ div>
]
查看getSorted()如何工作。
希望这可以帮助!
.attr('data-sort')
代替.data('sort')
。如果数据排序值在页面上动态更新,则attr('data-sort')仍将使用原始值。