用插件排序jquery表

时间:2012-02-19 17:29:24

标签: jquery ajax sorting jquery-plugins

我使用的是一个jquery插件:

http://tablesorter.com/docs/

我能够让它在静态表上工作。但是现在我试图让它在一个用ajax从数据库填充的表上工作。我觉得我正在使用这段代码:

    $(document).ready(function(){ $("#myTable").tablesorter(); } ); 

在错误的地方。我只是在页面顶部的Javascript标签中找到它。由于表不断刷新,我想我可能需要再次调用上面的代码。它应该进入ajax调用还是什么?

2 个答案:

答案 0 :(得分:3)

是的,您应该在创建动态表的ajax成功处理程序中执行它。这是因为jQuery应该能够在应用插件之前在页面上找到该元素。由于您是动态创建的,因此如果您在document就绪时执行代码,则无法找到它。

$.ajax(function(){
   ..
   success: function(){
        //Other code to create the dynamic table
        $("#myTable").tablesorter();
   }
   ..
});

<强>更新

如果要清空现有行并仅使用新行(数据)刷新同一个表,则必须在表上触发update事件。

$("myTable").trigger("update"); 

答案 1 :(得分:1)

检查您的插件文档,可能有一种方法可以在数据更改后对其进行重新排序。 This example可能是您正在寻找的。它使用空数据创建一次表分类器。插入数据后,它会使用以下命令触发更新:

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

这是每次ajax调用后应该使用的代码。您的原始代码应保持原样(仅运行一次)。完整的例子如下:

$(document).ready(function(){ 
    $("#myTable").tablesorter();
    $.ajax(function(){
        ..
        success: function(){
            // Update your table data (remove and insert tr, tds etc)
            $("#myTable").trigger("update");
            // If your sorting conditions changed, use also:
            $("#myTable").trigger("sorton",[sortingConditions]);
        }
        ..
    });
});

(从你的副本和ShankarSangoli的答案中复制的代码碎片)