我使用了charlietfl对StackOverflow中的this问题的答案,对1月到12月的HTML表格中的月份列进行排序。我刚修改了一些东西,所以我可以在我的网站上使用它。我也在使用tablesorter,因此我可以按字母顺序对其他表格列进行排序。问题是它只适用于Mozilla Firefox。其他浏览器不会对月份列进行排序。有时 包装表头的tr跳出thead标签并进入tbody标签。这是我的表:http://makzel.com/problems/
导致这种情况的原因是什么?
这是我的完整jquery代码:
(function($) {
'use strict';
var $window = $(window);
$window.ready(function(){
// Enable sorting for tables
$(".tablesort").tablesorter({
headers: {
0: {
sorter: false
}
}
});
// Sort by month
$('.tablesort th').click(function(){
var sorters =['January','February','March','April','May','June','July','August','September','October','November','December']
var $rows = $('tr:gt(0)').sort(function(a, b){
var aSrcIdx =sorters.indexOf( $(a).find('td:first').text() );
var bSrcIdx = sorters.indexOf( $(b).find('td:first').text());
return aSrcIdx > bSrcIdx;
});
$(this).closest('.tablesort').append($rows);
});
// Tablesort header background change on click
$(".tablesort th").click(function(){
$('.tablesort th').not(this).removeClass('sorted');
$(this).toggleClass('sorted');
});
function postOverflow() {
if ($window.width() < 768) {
$('.tablesort').closest('.post').css("overflow","scroll");
} else{
$('.tablesort').closest('.post').css("overflow","none");
}
}
postOverflow();
$window.resize(postOverflow);
}); // Ready
})(jQuery);
以下是显示跳出thead标记的tr标记的链接:http://cms5.revize.com/revize/haddonfield/departments/table_sort_test/index.php
答案 0 :(得分:1)
根据documentation of array.sort,请尝试返回-1以将a
置于b
之下,0将其保持不变,或将1 b
置于a
之下}。
尝试更换:
return aSrcIdx > bSrcIdx;
与
return aSrcIdx < bSrcIdx ? -1 : bSrcIdx < aSrcIdx ? 1 : 0;