jQuery显示为对元素进行随机排序
jQuery appears to sort elements randomly
我正在尝试对UI中的元素列表进行排序:
$('.stuff').sort(function(a,b) {
a = $(a).attr('data-date');
b = $(b).attr('data-date');
console.log(a + " > " + b);
console.log(a > b);
return a >= b;
}).appendTo('#stuff_container');
html看起来有点像
<div class='stuff' data-date='1278395142'>...</div>
<div class='stuff' data-date='1378395142'>...</div>
如果我把日志记录放在那里,我可以看到它正确地进行了比较,当比较为true时返回true。然而,当我运行排序时,在UI中,元素会随机出现。如果我重复执行这个代码,它会不断随机化顺序。我可以在调试控制台中通过查看数据属性是否都不正常来验证这一点。
我在谷歌上找不到任何关于这里可能发生的事情的参考资料。明天我会更深入地研究jQuery,但我想我会把它扔掉。jQuery 1.4.2(是的…)谢谢!
Array.prototype.sort
的回调应该返回一个Number
。尝试:
return Number(a) - Number(b);
您的排序函数正在返回(转换为数字后)0
或1
。值0
对应于sort
中的"值相等"。
从本质上讲,这意味着如果它检查值5
和4
,就会告诉它5大于4,应该在后面。但如果它检查4
和5
,你就会告诉它它们是相等的。这是矛盾的,因此行为是未定义的,导致您看到的"随机"排序。
试试这个:
return a == b ? 0 : (a > b ? 1 : -1);
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 使用promise和mongoose对文档进行排序
- Selectize.js:如何对整数值的选项进行排序
- 使用php、ajax、javascript对页面上的flash文件进行随机排序
- 点击时对文本进行随机排序
- 使用 AJAX 回调更新挖空可观察数组会生成随机排序的结果
- 如何使用jquery随机元素排序
- jQuery显示为对元素进行随机排序
- 如何避免使用同位素与砌体布局随机排序的间隙
- 随机排序列表
- 从随机子项对列表项进行排序
- Javascript随机排序与种子
- 排序元素jQuery插件,随机排序
- 如何实现一个排序,但随机列表与javascript/jquery
- Javascript随机无法对项目进行排序,没有错误
- javascript中相同的随机排序
- 重新排序随机元素
- 数组的随机排序
- 在页面中随机排序列表项时缺少元素
- 非重复随机排序算法