我在我的代码中使用了jQuery表分类器插件。只要我没有动态加载表数据的ajax请求,它就可以正常工作。我正在使用组合框来通过ajax过滤表的内容。我看了几篇帖子,说使用$("table").trigger("update");
可以解决我的问题。我用我的代码尝试了它,但问题仍然存在。
还有其他方法可以解决这个问题吗?请帮我找出解决方案。我真的很难受。任何帮助,将不胜感激。以下是我的代码:
$(document).ready(function () {
$("#myTable").tablesorter({
widthFixed: true,
widgets: ['zebra'],
headers: {
0: {
sorter: false
}
}
}).tablesorterPager({
container: $("#pager")
});
$("#tag").change(function (event) {
$('#myTable').trigger("update");
$("#myTable").tablesorter();
});
});
这里tag是一个名为tag的组合框的id,myTable是带有sorter pager插件的表的id。
答案 0 :(得分:1)
目前还不清楚用于进行AJAX调用的机制,但如果是ASP.NET UpdatePanel,则需要在AJAX调用完成后重新绑定jQuery事件。
将以下内容添加到您的脚本
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(function(sender, args) {
// Code to rebind your UI
});
注意:仅在您使用ASP.NET AJAX时才有效
答案 1 :(得分:1)
新的DOM元素未绑定到JavaScript事件。 jQuery使用它的'live'函数处理类似的问题。完成AJAX调用后,重新运行document.ready()中的javascript。
答案 2 :(得分:1)
我会将tablesorter函数包装在它自己的函数中。
然后,无论何时需要重新运行它 - 只需再次调用它。
$(document).ready(function () {
function resortTable(){
$("#myTable").tablesorter({
widthFixed: true,
widgets: ['zebra'],
headers: {
0: {
sorter: false
}
}
}).tablesorterPager({
container: $("#pager")
});
}
$("#tag").change(function() {
resortTable();
});
});
答案 3 :(得分:0)
问题是你在组合框改变时调用$('#myTable').trigger("update");
代码,而不是从你的AJAX请求得到响应时。如果您使用的是ASP.NET AJAX,请尝试发布的代码ericphan。如果您正在使用jQuery AJAX,请尝试以下方法:
$.get('http://site.com/request-address', function(data) {
// Code you're using to replace the contents of the table
// Code to rebind the tablesorter
$('#myTable').trigger("update");
$("#myTable").tablesorter();
});
这样,您将tablesorter重新绑定到新表内容,而不是将要替换的旧内容。
答案 4 :(得分:0)
我会考虑使用livequery插件......它可以创造奇迹
答案 5 :(得分:0)
我知道这是一个老帖子,但也许我的答案会帮助其他人搜索同样的问题。我通过调用
解决了这个问题$('#myTable').tablesorter();
在我的AJAX电话之后再次发送。