我有这部分功能可以按数字对元素进行排序。此数字取自要排序的元素的 data-ranking
属性:
$(".tab_entry").sort(function(a,b){
return parseFloat(a.dataset.ranking) < parseFloat(b.dataset.ranking)
}).appendTo('div.active');
现在的问题是:这在 Firefox 24 上完美运行,但在 Chrome 28 上运行不正常(排序失败,顺序错误),并且在 Safari 5.1.7 和 IE 10 上不执行任何操作。
有没有人得到解决方案?
最佳答案
jQuery 的 API 中没有列出排序函数。
您可能需要先将您的元素转换为数组,以便您可以使用浏览器的 native 排序功能:
var sortedArray = $(".tab_entry").toArray().sort(function(a,b){ ... })
此外(也许更重要),排序函数应该返回一个数字,而不仅仅是真/假:Array.prototype.sort
function(a,b) {
//Return the difference in the rankings.
//May need to switch the terms depending on what ordering you want.
return parseFloat(a.dataset.ranking) - parseFloat(b.dataset.ranking)
}
关于javascript - 使用 jquery sort() 函数对元素进行排序在 webkit 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19262799/