2010-07-09 83 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調用後再次解決了此問題。