Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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
Javascript jquery tablesorter不适用于通过ajax获得的表,但适用于静态表_Javascript_Jquery_Ajax_Tablesorter - Fatal编程技术网

Javascript jquery tablesorter不适用于通过ajax获得的表,但适用于静态表

Javascript jquery tablesorter不适用于通过ajax获得的表,但适用于静态表,javascript,jquery,ajax,tablesorter,Javascript,Jquery,Ajax,Tablesorter,如果我在HTML文档中创建一个表并插入 $('#class_roster').tablesorter(); 在$(document).ready函数中,可以对表进行排序,并且tablesorter可以按预期工作。但是,如果页面加载,用户单击表单中的一个按钮以请求特定的表,该表将通过AJAX发送回,该表将显示,应用了tablesorter css,但排序图标不会出现,并且该表不可排序。没有出现错误。这是独立于浏览器的(例如,Chrome 29和Firefox 23) AJAX调用在validat

如果我在HTML文档中创建一个表并插入

$('#class_roster').tablesorter();
在$(document).ready函数中,可以对表进行排序,并且tablesorter可以按预期工作。但是,如果页面加载,用户单击表单中的一个按钮以请求特定的表,该表将通过AJAX发送回,该表将显示,应用了tablesorter css,但排序图标不会出现,并且该表不可排序。没有出现错误。这是独立于浏览器的(例如,Chrome 29和Firefox 23)

AJAX调用在validate函数中。以下是片段:

/* Validate the info entered */
$('#loadTable').validate({
    rules: {
        snip
    },
    messages: {
        snip
    },
    submitHandler: function(form) {
        var formData = $(form).serialize();
        $.ajax({
            url: "/snip", 
            data: formData,
            type: 'post',
            headers: { "cache-control": "no-cache" },
            error: function(XMLHttpRequest, textStatus, errorThrown){
                snip
            },
            success: function(data){
                var theResult = JSON.parse(data);
                $('#Student_Info').html(theResult.Student_Info); /* displays table in div 'Student_Info' */
                $('#class_roster').tablesorter();
            }
        });
    }
});
在这两种情况下,该表如下所示:

<table id="class_roster" class="tablesorter" >
    <thead>
        <tr><th>Col 1</th><th>Col 2</th> ... </tr>
    </thead>
    <tbody>
        <tr><td>Info 1</td><td>Info 2</td> ... </tr>
        <tr><td>Info 1</td><td>Info 2</td> ... </tr>
        <tr><td>Info 1</td><td>Info 2</td> ... </tr>
    </tbody>
</table>

第1列第2列。。。
信息1信息2。。。
信息1信息2。。。
信息1信息2。。。
我不知道为什么在加载文档时,当表存在时,代码会起作用,而在动态生成表时,代码不会起作用。(为了清楚起见,我有两个完全相同的页面。)

关于通过AJAX将行附加到表中有很多问题,在tablesorter站点上甚至有一个这样的例子,但我找不到任何与全新表相关的问题

更新

事实证明,这是一个浏览器缓存问题。这两种浏览器都暴露于开发代码中,但出于某种原因,它们没有更新javascript文件。我将Firefox设置为在退出时删除所有内容,当我重新启动它(出于不同的原因)时,我发布的代码正常工作。
对此很抱歉:我没有想到检查浏览器缓存问题。

将其放入DOM就绪事件:

$("#class_roster").tablesorter();
在ajax成功调用中尝试以下操作:

$("#class_roster").trigger("update");

这是插入到已包含
class\u花名册
表的页面中的新表吗?也就是说,您现在有两个具有相同id的表吗?如果您最终有两个具有相同id的表,那么表排序器将只处理其中的任何一个表。这两个表位于不同的页面中。在第1页中,静态表是唯一的表。在第2页中,动态表是唯一的表。我这样做是为了检查代码的其他方面(例如,加载的库是否正确,名称是否有误等等)。谢谢你的建议。我刚刚尝试过,但没有改变行为:动态表仍然没有排序图标,无法排序。我不知道这是否相关,但整个验证函数都在$(document).ready函数中。奇怪!这对我的情况有效。把你的代码放在小提琴上。