2011-11-18 81 views
3

所以在我的數據表,我有按鈕,允許記錄進行編輯。我使用JQuery來設置樣式併爲按鈕點擊賦予功能。將JQuery應用於按鈕的唯一方法是將代碼放在表的fnDrawCallback選項中。但是,它會導致函數的多個實例! 例如,只是爲了測試我創建一個警報,讓我點擊按鈕時的按鈕ID(這是記錄ID)。而不是隻提醒我,它給了我幾個警報!JQuery的數據表 - fnDrawCallback遞歸問題

任何想法?

*作爲邊注,我試圖宣佈fnInitComplete選項裏面的功能,但只適用所述函數應用於所述第一組記錄被顯示(即,10)。一旦我顯示更多記錄或進入下一頁,這些功能就不會在這些記錄上工作。

var tfTable = $('.mypbhs_truforms').dataTable({ 
     "bProcessing": true, 
     "sAjaxSource": 'sql/mypbhs_truforms.php?accountid=<?PHP echo $accountid;?>',   
     "aaSorting": [[ 1, "asc" ]], 
     "bJQueryUI": true, 
     "sPaginationType": "full_numbers", 
     //"bStateSave": true, //Use a cookie to save current display of items 
     "aoColumns": [ 
      {"asSorting": [ ], "sClass":"center"}, 
      null, 
      null, 
      null, 
      null, 
      null, 
      {"asSorting": [ ], "sClass":"center"}, 
     ], 
     "fnDrawCallback": function(){ 
      //EDIT OFFICE FORM 
      $('.mypbhs_edit_truform_button').click(function(){ 
       var tf_id = $(this).attr('id'); 
       alert(tf_id); 
      }); 
     }, 
     "bScrollCollapse": true, 
     "sScrollX": "100%", 
     "fnInitComplete": function() { 
       tfTable.fnAdjustColumnSizing(); 
     } 
    }); 

回答

1

好的,所以找到了解決辦法。對於我放在fnDrawCallback選項中的所有函數,使用JQuery的.on函數。 我很好奇爲什麼使用fnDrawCallback創建同一個函數的多個實例,儘管如果任何人有答案。

0

哪裏.mypbhs_edit_truform_button住?如果它不在原始表格本身中,則每次重繪表格時都會再次綁定它。由於.on()作品,據推測是在代理模式下(因爲它可以只是。點擊直接翻譯())..這意味着它生活在原始表本身之外,因此多個綁定。

如果你想做到這一點原始的方式(雖然我認爲。對()是更好的),沒有任何理由不把它放在InitComplete回調呢?