我使用的是一个jquery插件:
我能够让它在静态表上工作。但是现在我试图让它在一个用ajax从数据库填充的表上工作。我觉得我正在使用这段代码:
$(document).ready(function(){ $("#myTable").tablesorter(); } );
在错误的地方。我只是在页面顶部的Javascript标签中找到它。由于表不断刷新,我想我可能需要再次调用上面的代码。它应该进入ajax调用还是什么?
答案 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的答案中复制的代码碎片)