Javascript jquery tablesorter不适用于通过ajax获得的表,但适用于静态表
如果我在HTML文档中创建一个表并插入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
$('#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函数中。奇怪!这对我的情况有效。把你的代码放在小提琴上。