Tablesorter使用实时数据重新排序

时间:2013-10-18 09:23:41

标签: jquery jquery-plugins tablesorter

我有一个tablesorter表,在其中我有一个TD每20秒更新一次,因为数据发生变化,我从数据库中提取新值,使用以下代码:

window.setInterval(function(){
    $("td.odds span").each(function(){
        var id=$(this).parent().attr("rel");
        $(this).load("/td.php?id="+id);
    });
},20000);

我想知道的是,如果之后可以对表进行重新排序,那么任何值都会发生变化(如果有的话,那么现在表有可能实际上表的顺序错误)

我尝试添加以下代码但未成功:

var sorting=[[11,0]]; 
$("table.formguide").trigger("sorton",[sorting]);

$("table.formguide").trigger("update");

但没有成功。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用updateCell方法专门定位修改后的单元格,然后应用sorton方法来求助该列。

var cell = $('table.formguide td.odds span').each(function(){
    $('table.formguide').trigger('updateCell', [ this ]);
});
$('table.formguide').trigger('sorton', [ [[11,0]] ]);

或者,您可以查看已修改fork of tablesorterupdateCell method以包含使用当前排序自动求助的标志

var last,
    // resort is true by default, but we set it to false until all cells have updated
    resort = true,
    // callback function run on the last updated cell
    callback = function(){ /* do something after each updateCell */ },
    // updated cells
    $cells = $('table.formguide td.odds span'),
    len = $cells.length

$cells.each(function(i){
    last = i === len;
    // don't resort or trigger a callback until we're on the last cell
    $('table.formguide').trigger('updateCell', [ this, last ? resort : false, last ? callback : null ]);
});

答案 1 :(得分:0)

使用updateAll代替,使用tablesorter v2.8 example

  var resort = true, // re-apply the current sort
    callback = function(){
      // do something after the updateAll method has completed
    };

  // let the plugin know that we made a update, then the plugin will
  // automatically sort the table based on the header settings
  $("table").trigger("updateAll", [ resort, callback ]);