Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带插件的jquery表排序_Jquery_Ajax_Sorting_Jquery Plugins - Fatal编程技术网

带插件的jquery表排序

带插件的jquery表排序,jquery,ajax,sorting,jquery-plugins,Jquery,Ajax,Sorting,Jquery Plugins,我使用的jquery插件位于: 我能让它在静止的桌子上工作。但现在我正试图让它在一个表上工作,这个表是用ajax从数据库填充的。我觉得我把这个代码: $(document).ready(function(){ $("#myTable").tablesorter(); } ); 在错误的地点。我只是把它放在页面顶部的Javascript标记中。由于表不断刷新,我想我可能需要再次调用上面的代码。它应该放在ajax调用中还是什么?是的,您应该在创建动态表的ajax成功处理程序中执行它。这是

我使用的jquery插件位于:

我能让它在静止的桌子上工作。但现在我正试图让它在一个表上工作,这个表是用ajax从数据库填充的。我觉得我把这个代码:

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

在错误的地点。我只是把它放在页面顶部的Javascript标记中。由于表不断刷新,我想我可能需要再次调用上面的代码。它应该放在ajax调用中还是什么?是的,您应该在创建动态表的ajax成功处理程序中执行它。这是因为jQuery应该能够在应用插件之前找到页面上的元素。因为您是动态创建它的,所以如果您在documentready上执行代码,它将找不到它

更新:

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

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

是的,您应该在创建动态表的ajax成功处理程序中执行它。这是因为jQuery应该能够在应用插件之前找到页面上的元素。因为您是动态创建它的,所以如果您在documentready上执行代码,它将找不到它

更新:

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

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

检查你的插件文档,可能有一种方法可以在数据改变后重新排序。可能就是你要找的。它创建一次带有空数据的表分类器。插入数据时,它会使用以下命令触发更新:

$("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的答案中复制的代码片段检查您的插件文档,可能有一种方法可以在数据更改后重新排序。可能就是你要找的。它创建一次带有空数据的表分类器。插入数据时,它会使用以下命令触发更新:

$("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的答案中复制的代码片段

jQuery dataTables听起来更适合您的需要:jQuery dataTables听起来更适合您的需要:在我填充表之后,它就可以工作了,但是如果Ire填充表,然后重新排序旧表,我认为OP意味着表是静态的,表数据tr,td是ajax调用后将发生的变化。这段代码已经创建了插件,所以它不会再创建它了。@searayman-我想你正在创建一个新表。但是,如果您只是刷新同一个表,请查看我编辑的答案。是的,这是正确的,我没有创建新表。我正在清除标题下的行并重新填充。我尝试在添加新行的代码之后添加触发器。但是,当我测试触发器并单击列进行排序时,我得到以下错误:未捕获的TypeError:无法读取未定义的MultiPortjQuery.tablesorter.js:600$.extend.tablesorter.construct.each.$headers.click.mousedown.OnSelectStart的属性“1”。该属性在填充表后生效,但是,如果Ire填充表,然后对旧表进行排序,则会弹出回原来的表。我认为OP意味着该表是静态的,表数据tr,td是ajax调用后会发生变化的。这段代码已经创建了插件,所以它不会再创建它了。@searayman-我想你正在创建一个新表。但是,如果您只是刷新同一个表,请查看我编辑的答案。是的,这是正确的,我没有创建新表。我正在清除标题下的行并重新填充。我尝试在添加新行的代码之后添加触发器。但是当我测试它并单击列进行排序时,我得到以下错误:未捕获的TypeError:无法读取未定义的MultiPortjQuery.tablesorter.js:600$.extend.tablesorter.construct.each.$headers.click.mousedown.onselectstart的属性“1”