2010-07-09 91 views
3

我在我的代码中使用了jQuery table sorter插件。它工作正常,只要我没有动态加载表数据的ajax请求。我正在使用组合框通过ajax过滤表格的内容。我读了几篇文章,说使用$("table").trigger("update");可以解决我的问题。我用我的代码尝试过,但问题仍然存在。jQuery tablesorter插件在AJAX调用后不起作用

有没有其他方法可以解决这个问题?请帮我找出一个解决方案。我很困难。任何帮助,将不胜感激。下面是我的代码:

$(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(); 
    }); 
}); 

这里标签是一个组合框命名标签的ID和mytable的是分拣寻呼机插件表的ID。

+0

你的ajax调用在哪里? – Reigel 2010-07-09 08:42:04

回答

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

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到新表的内容,不老的内容都将被替换。

1

新的DOM元素没有绑定到JavaScript事件。 jQuery使用它的'live'函数处理类似的问题。一旦AJAX调用完成,请重新运行document.ready()中的javascript。

1

我会将tablesorter函数包装在它自己的函数中。

然后,每当你需要重新运行它 - 只需再次调用它。

$(document).ready(function() { 
    function resortTable(){ 
      $("#myTable").tablesorter({ 
      widthFixed: true, 
      widgets: ['zebra'], 
      headers: { 
       0: { 
        sorter: false 
       } 
      } 
     }).tablesorterPager({ 
      container: $("#pager") 
     }); 
    } 

     $("#tag").change(function() { 
      resortTable(); 
     }); 
}); 
+0

甚至不知道为什么这个工程,但它确实......我也使用jPaginator来分页,所以在我的函数中添加了BEFORE也是..干得好,一直在我的头发上撕掉这几天! ! – 2011-09-07 23:53:18

+0

这里#tag是什么? – Sravanti 2013-12-05 07:30:47

+0

@Venkat Re OP:“这里的标签是名为tag的组合框的id,myTable是带有分页器pager插件的表的id。” – 2013-12-05 16:27:48

0

我知道这是旧的文章,但也许​​我的回答将帮助别人谷歌搜索这同样的问题。我通过拨打电话

$('#myTable').tablesorter(); 

在我的AJAX调用后再次解决了此问题。