2014-02-06 44 views
-1

我有一個頁面有一個jQuery數據表,其中一列是複選框。
在document.ready上,我通過點擊事件來綁定這些複選框(由類標識)。jquery如何在重新創建複選框輸入後重新綁定單擊事件

現在,在對錶格數據進行修改後,我通過清除表格並重新填充行來刷新表格。

但是現在複選框會失去它們的點擊事件。

我知道我需要重新綁定點擊事件,但我無法弄清楚代碼必須去的地方。

這是函數,我重新填充表

function RefreshBuyerAgentTable(tableId, urlData) { 
     var selBuyerAgid = -1; 
     var selBuyerAgname = ''; 
     var oTbl = $(tableId).dataTable(); 

     //var oSettings = oTbl.fnSettings(); 

     oTbl.fnClearTable(this); 
     var sItems = JSON.parse(urlData); 
     for (var i = 0; i < sItems.length; i++) { 

      oTbl.fnAddData(["<input type='checkbox' id='chkBuyer_" + sItems[i].BuyerAgentId + "' class='buyeragentcheckboxes'/><img src='../../images/edit_24x24.png' style='cursor: pointer' onclick='EditBuyerAgent(" + sItems[i].BuyerAgentId + ")' />", sItems[i].BuyerAgentFullName, sItems[i].BuyerAgentCompanyName]); 
      if (sItems[i].BuyerAgentIsSelected){ 
       selBuyerAgid = sItems[i].BuyerAgentId; 
       selBuyerAgname = sItems[i].BuyerAgentFullName; 

      } 
     } 

這是事件綁定我在的document.ready部分

$("#tblAgentInformationBuyerAgents tbody tr td .buyeragentcheckboxes").click(function(e) { 
+1

使用'on'的代表版本而不是點擊。例如'.on(「click」,「selector-goes-here」,function(){...' –

回答

1

使用委派的事件處理程序使用。

$("#tblAgentInformationBuyerAgents").on("click", "tbody tr td .buyeragentcheckboxes", function(e) { 

這樣,更新DOM時不會刪除事件處理程序。我上面的例子假設#tblAgentInformationBuyerAgents總是存在於DOM中。

您的問題是事件處理程序「附加」到DOM元素,因此當您刪除DOM元素時,事件處理程序也會消失。

+0

謝謝你解決這個問題 – foop

相關問題