我正在使用tablesorter对我的一个页面上的网格进行排序.我每10秒钟进行一次AJAX调用,以获取更新的股票信息,并相应地更新我的网格.这很有用,但我无法正确地缓存我的排序选项.相反,我似乎已经缓存了排序,但是当我这样做时,tablesorter也会缓存我之前的行,并将它们与新的排序行一起显示出来.
例如,我的初始网格有10行数据.我排在第二列.10秒后,一组新的10行进入,但我的最初10行仍然显示,即使我已经将它们清空了.我已经研究了所有,我似乎无法找到答案.
如果我根本不排序,并且我没有调用"sorton"的触发器,我会根据需要获得10行,但行当然没有排序.如果我将该触发器称为"sorton",我的数据会被排序,但每次调用该函数时我会得到10个新行(总共20行,然后总共30行等).
这是我的AJAX调用中的代码:
if (myResult.Data.length > 0) {
$.each(myResult.Data, function() {
myRows += "<tr><td>" + this.column1 + "</td><td>" + this.column2 + "</td></tr>";
});
$("#myTBody").empty();
// $("#myTBody").append(myRows); //tried this first
// $("#myTable").trigger("update"); // combined with this
$("#myTBody").append(myRrows).trigger("update");
var sorting = $("#myTable")[0].config.sortList;
$("#myTable").trigger("sorton", [sorting]);
}
Run Code Online (Sandbox Code Playgroud)
虽然这篇文章很老,但是如果有像我这样的人正在寻找原始tablesorter的修复程序,我通过sorton以下面的"延迟"方式触发来解决问题.
$("#myTBody").append(myRrows).trigger("update");
var sorting = $("#myTable")[0].config.sortList;
setTimeout(function () {
$("#myTable").trigger("sorton", [sorting]);
}, 100);
Run Code Online (Sandbox Code Playgroud)
这样做的原因是因为update原始tablesorter中的函数不会立即更新缓存.它在update调用方法后1ms更新它.因此,sorton无法立即获取更新的缓存.这是我在阅读原始JS代码后得出的结论,如果我错了,请纠正我.
演示:http://jsfiddle.net/eY8uH/692/
嗯,这似乎是原始表排序器(演示)的问题。
抱歉,我不记得更新期间缓存没有被清除的原因;但这个问题不会发生在我的tablesorter 分支(演示)中。
| 归档时间: |
|
| 查看次数: |
3364 次 |
| 最近记录: |