Javascript 在webkit上使用jquery Sort()函数对元素进行排序失败

Javascript 在webkit上使用jquery Sort()函数对元素进行排序失败,javascript,jquery,css,sorting,webkit,Javascript,Jquery,Css,Sorting,Webkit,函数的这一部分是按数字对元素进行排序。此数字取自要排序的元素的数据排序属性: $(".tab_entry").sort(function(a,b){ return parseFloat(a.dataset.ranking) < parseFloat(b.dataset.ranking) }).appendTo('div.active'); $(“.tab\u条目”).sort(函数(a,b){ 返回parseFloat(a.dataset.ranking)

函数的这一部分是按数字对元素进行排序。此数字取自要排序的元素的
数据排序
属性:

$(".tab_entry").sort(function(a,b){
    return parseFloat(a.dataset.ranking) < parseFloat(b.dataset.ranking)
}).appendTo('div.active');
$(“.tab\u条目”).sort(函数(a,b){
返回parseFloat(a.dataset.ranking)
现在的问题是:这在Firefox 24上运行得很好,但在Chrome 28上却不行(排序失败,顺序出错),在Safari 5.1.7和IE 10上也没有任何作用


有人找到解决方案了吗?

jQuery的API中没有列出排序函数

您可能需要先将元素转换为数组,以便使用浏览器的本机排序功能:

var sortedArray = $(".tab_entry").toArray().sort(function(a,b){ ... })
此外(也许更重要的是),sort函数应该返回一个数字,而不仅仅是true/false:

尝试:

return parseFloat(a.dataset.ranking) - parseFloat(b.dataset.ranking);

如果
a
小于
b
,这将返回一个负数,这将把
a
放在
b
之前,反之亦然。如果两个值相等,它将返回
0
,由于排序不稳定,因此顺序将保持不变。

这对Firefox、Chrome和Safari都有效。我不工作。它什么也不做。我要试试ThinTimsolution@ErickLeónBolinaga这意味着你正在使用的排序插件被窃听了,因为它不是真正的跨浏览器。您使用的是最新版本吗?使用jquery 1.9.1和浏览器:Firefox24、Chrome 28、Safari 5.1.7和IE 10。我使用的代码就是这个<代码>$(this.parent().parent().parent().parent().find(“.tab_条目”).sort(函数(a,b){return parseFloat(b.dataset.ranking)-parseFloat(a.dataset.ranking)}.appendTo('div.active')我将尝试将元素转换为数组。我会在几秒钟内回复您的反馈。感谢尝试此操作会导致错误。语法错误,
appendTo
不是一个函数。您需要将生成的数组转换回jQuery对象<代码>$(sortedArray).appendTo('div.active')
return parseFloat(a.dataset.ranking) - parseFloat(b.dataset.ranking);