javascript - 使用 jquery sort() 函数对元素进行排序在 webkit 上失败

标签 javascript jquery css sorting webkit

我有这部分功能可以按数字对元素进行排序。此数字取自要排序的元素的 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/

相关文章:

javascript - 将 HTML Canvas 坐标系转换为笛卡尔坐标系

javascript - NodeJS Cheerio 抓取 li 标签总是返回 NULL

html - 使 <a> 链接填充 <div> 的全高

HTML 子菜单

javascript - 从 iOS 浏览器中的后退缓存检索页面时持续触发的事件

javascript - preventDefault 在 Google Chrome 5 中不起作用

javascript - 为什么 window.load 事件发生在 img 加载之前?

javascript - 为什么这个幻灯片闪烁?

javascript - 使用 jQuery 打开多个视频嵌入模式

javascript - 将中间的 div 向左移动会在其右侧留下空白