2011-11-18 75 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回调呢?