一个小功能,居然尝试了无数遍!
在使用 tablesorter时,实现点击表头 排序倒颠倒。
贴一下代码吧,就是里面的那个toggle_sort()。
坑有好几个,列几个我暂还记得的(目前已经修改成功了,所以很多坑都看不出来:
放在 this.dataset.sortOrder中的值始终是string类型,所以即使你设置
sortOrder = 1,下回取出来的时候,还得转为Number(sortOrder).
所以 if(sortOrder)当sortOrder = "0"时,就为true了。
如果 写 this.dataset.sortOrder = ! this.dataset.sortOrder,那更麻烦了
值变成了字符 "true" or "false"。你要用得Number(Boolean(sortOrder))
最后别的语言里的小技巧[0,1][sortOrder === 0] 用来翻转也不对
[][true] 会返回undefined……
顿感自己不会写程序!
function make_table_sortable(table, cfg){
// var cfg = cfg || {debug: false};
$(table).tablesorter({
tabIndex: false,
dateFormat: 'yyyy-mm-dd'
});
function toggle_sort(event){
/* var _this = event.currentTarget || event.current_target; */
if(this.dataset.sortOrder === undefined){
this.dataset.sortOrder = "0";
}
this.dataset.sortOrder = ["0", "1"][Number((this.dataset.sortOrder === "0"))];
var order = Number(this.dataset.sortOrder);
var index = event.currentTarget.cellIndex;
$(this).trigger("sorton", [[[index, order]]]);
}
$(table).find("thead tr th").click(toggle_sort);
}
--
FROM 116.247.85.*