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);